diff --git a/generator/expression-val.go b/generator/expression-val.go index 05f50f5..73024df 100644 --- a/generator/expression-val.go +++ b/generator/expression-val.go @@ -62,7 +62,7 @@ func (this *generator) generateMethodCallVal (call *entity.MethodCall) (llvm.Val if pointerType, ok := call.Source.Type().(*entity.TypePointer); ok { if sourceType, ok := pointerType.Referenced.(*entity.TypeNamed); ok { method, err := this.method(entity.Key { - Unit: sourceType.Unit(), + Unit: sourceType.Type.Unit(), Name: sourceType.Name, Method: call.Name, }) @@ -72,6 +72,7 @@ func (this *generator) generateMethodCallVal (call *entity.MethodCall) (llvm.Val args[0] = source return this.blockManager.NewCall(method, method.Signature, args...), nil } + if err != nil { return nil, err } } } diff --git a/generator/multiunit_test.go b/generator/multiunit_test.go index d034a0c..b1abda2 100644 --- a/generator/multiunit_test.go +++ b/generator/multiunit_test.go @@ -148,14 +148,11 @@ declare void @"9U3Q1r5tPJSXoVNdBSzCow==::T.method"(ptr %this) func TestUnitMethodPtr (test *testing.T) { testUnits (test, -`%"9U3Q1r5tPJSXoVNdBSzCow==::T" = type i64 -define void @main() { +`define void @main() { 0: - %1 = alloca %"9U3Q1r5tPJSXoVNdBSzCow==::T" - %2 = alloca ptr - store ptr %1, ptr %2 - %3 = load ptr, ptr %2 - call void @"9U3Q1r5tPJSXoVNdBSzCow==::T.method"(ptr %3) + %1 = alloca ptr + %2 = load ptr, ptr %1 + call void @"9U3Q1r5tPJSXoVNdBSzCow==::T.method"(ptr %2) ret void } declare void @"9U3Q1r5tPJSXoVNdBSzCow==::T.method"(ptr %this)