...
This commit is contained in:
@@ -1,18 +1,29 @@
|
||||
// c
|
||||
extern func puts(text: cstring)
|
||||
|
||||
struct Name
|
||||
{
|
||||
first: cstring
|
||||
last: cstring
|
||||
}
|
||||
|
||||
struct Human
|
||||
{
|
||||
name: Name
|
||||
age: cstring
|
||||
}
|
||||
|
||||
func main(args: []cstring): i64
|
||||
{
|
||||
let x: u32 = 23
|
||||
let x: Human = struct {
|
||||
name = struct {
|
||||
first = "bob"
|
||||
last = "the builder"
|
||||
}
|
||||
age = "23"
|
||||
}
|
||||
|
||||
if x == 11 || false
|
||||
{
|
||||
puts("yes")
|
||||
}
|
||||
else
|
||||
{
|
||||
puts("no")
|
||||
}
|
||||
puts(x.name.last)
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -1074,7 +1074,15 @@ public class QBEGenerator
|
||||
|
||||
private string EmitStructFieldAccess(StructFieldAccessNode structFieldAccess)
|
||||
{
|
||||
return EmitLoad(structFieldAccess.Type, EmitAddressOfStructFieldAccess(structFieldAccess));
|
||||
var address = EmitAddressOfStructFieldAccess(structFieldAccess);
|
||||
|
||||
// Inline structs should not be loaded
|
||||
if (structFieldAccess.Type is StructTypeNode)
|
||||
{
|
||||
return address;
|
||||
}
|
||||
|
||||
return EmitLoad(structFieldAccess.Type, address);
|
||||
}
|
||||
|
||||
private string EmitStructFuncCall(StructFuncCallNode structFuncCall)
|
||||
|
||||
Reference in New Issue
Block a user