From cc98fd4606222ec1d18878d5e8278dc32910076b Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Fri, 3 Nov 2017 12:25:46 -0700 Subject: Fix #248 (#249) * Fix up test runner output for compute. We want compute-based tests to produce a `.actual` file when compilation fails, so we can easily diagnose the issue. I thought I'd added this capability previous, but it seemst to not be present any more. * Compute result types for constructor decls Fixes #246 When the parser sees an `init()` declaration, it can't easily know what type is is supposed to return, so it leaves the type as NULL. This was causing some downstream crashes. Rather than special-case every site that cares about the result type of a callable, we will instead ensure that we install an actual result type on an initializer/constructor as part of its semantic checking. This code needs to handle both the case where the initializer is declared inside a type, as well as the case where it is declared inside an `extension`. --- source/slang/mangle.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'source/slang/mangle.cpp') diff --git a/source/slang/mangle.cpp b/source/slang/mangle.cpp index 63e54d065..2cdd6a9e1 100644 --- a/source/slang/mangle.cpp +++ b/source/slang/mangle.cpp @@ -275,7 +275,12 @@ namespace Slang emitType(context, GetType(paramDeclRef)); } - emitType(context, GetResultType(callableDeclRef)); + // Don't print result type for an initializer/constructor, + // since it is implicit in the qualified name. + if (!callableDeclRef.As()) + { + emitType(context, GetResultType(callableDeclRef)); + } } } -- cgit v1.2.3