Index: pkg/analyzer2dart/test/sexpr_data.dart |
diff --git a/pkg/analyzer2dart/test/sexpr_data.dart b/pkg/analyzer2dart/test/sexpr_data.dart |
deleted file mode 100644 |
index e7d00aef9960851581f88922b235d4a6b0794829..0000000000000000000000000000000000000000 |
--- a/pkg/analyzer2dart/test/sexpr_data.dart |
+++ /dev/null |
@@ -1,1549 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-/// Test data for sexpr_test. |
-library test.sexpr.data; |
- |
-import 'test_helper.dart'; |
- |
-class TestSpec extends TestSpecBase { |
- // A [String] or a [Map<String, String>]. |
- final output; |
- |
- /// True if the test should be skipped when testing analyzer2dart. |
- final bool skipInAnalyzerFrontend; |
- |
- const TestSpec(String input, this.output, |
- {this.skipInAnalyzerFrontend: false}) : super(input); |
-} |
- |
-const List<Group> TEST_DATA = const [ |
- const Group('Empty main', const [ |
- const TestSpec(''' |
-main() {} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-foo() {} |
-main() { |
- foo(); |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 (v0) |
- (LetPrim (v1 (Constant (Null))) |
- (InvokeContinuation return (v1))))) |
- (InvokeStatic foo () k0))) |
-''') |
- ]), |
- |
- const Group('Literals', const [ |
- const TestSpec(''' |
-main() { |
- return 0; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 1.5; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Double 1.5))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return true; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Bool true))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return false; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Bool false))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return "a"; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (String "a"))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- ]), |
- |
- const Group('Parameters', const [ |
- const TestSpec(''' |
-main(args) {} |
-''', ''' |
-(FunctionDefinition main () (args) return |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a, b) {} |
-''', ''' |
-(FunctionDefinition main () (a b) return |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- ]), |
- |
- const Group('Pass arguments', const [ |
- const TestSpec(''' |
-foo(a) {} |
-main() { |
- foo(null); |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Null))) |
- (LetCont ((k0 (v1) |
- (LetPrim (v2 (Constant (Null))) |
- (InvokeContinuation return (v2))))) |
- (InvokeStatic foo (v0) k0)))) |
-'''), |
- |
- const TestSpec(''' |
-bar(b, c) {} |
-foo(a) {} |
-main() { |
- foo(null); |
- bar(0, ""); |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Null))) |
- (LetCont ((k0 (v1) |
- (LetPrim (v2 (Constant (Int 0))) |
- (LetPrim (v3 (Constant (String ""))) |
- (LetCont ((k1 (v4) |
- (LetPrim (v5 (Constant (Null))) |
- (InvokeContinuation return (v5))))) |
- (InvokeStatic bar (v2 v3) k1)))))) |
- (InvokeStatic foo (v0) k0)))) |
-'''), |
- |
- const TestSpec(''' |
-foo(a) {} |
-main() { |
- return foo(null); |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Null))) |
- (LetCont ((k0 (v1) |
- (InvokeContinuation return (v1)))) |
- (InvokeStatic foo (v0) k0)))) |
-'''), |
- ]), |
- |
- const Group('Local variables', const [ |
- const TestSpec(''' |
-main() { |
- var a; |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- var a = 0; |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (InvokeContinuation return (a))) |
-'''), |
- ]), |
- |
- const Group('Local variable writes', const <TestSpec>[ |
- const TestSpec(''' |
-main() { |
- var a; |
- a = 10; |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Null))) |
- (LetPrim (v1 (Constant (Int 10))) |
- (InvokeContinuation return (v1))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- var a = 0; |
- a = 10; |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (Int 10))) |
- (InvokeContinuation return (v1))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- var a = 0; |
- print(a); |
- a = ""; |
- print(a); |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((k0 (v1) |
- (LetPrim (v2 (Constant (String ""))) |
- (LetCont ((k1 (v3) |
- (InvokeContinuation return (v2)))) |
- (InvokeStatic print (v2) k1))))) |
- (InvokeStatic print (v0) k0)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- print(a); |
- a = ""; |
- print(a); |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k1 (v2) |
- (InvokeContinuation return (v1)))) |
- (InvokeStatic print (v1) k1))))) |
- (InvokeStatic print (a) k0))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- if (a) { |
- a = ""; |
- } |
- print(a); |
- return a; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (LetCont ((k1 (v1) |
- (InvokeContinuation return (v0)))) |
- (InvokeStatic print (v0) k1)))) |
- (LetCont ((k2 () |
- (LetPrim (v2 (Constant (String ""))) |
- (InvokeContinuation k0 (v2)))) |
- (k3 () |
- (InvokeContinuation k0 (a)))) |
- (Branch (IsTrue a) k2 k3)))) |
-'''), |
- ]), |
- |
- const Group('Dynamic access', const [ |
- const TestSpec(''' |
-main(a) { |
- return a.foo; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (InvokeMethod a foo () k0))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- var a = ""; |
- return a.foo; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (String ""))) |
- (LetCont ((k0 (v1) |
- (InvokeContinuation return (v1)))) |
- (InvokeMethod v0 foo () k0)))) |
-'''), |
- ]), |
- |
- const Group('Dynamic invocation', const [ |
- const TestSpec(''' |
-main(a) { |
- return a.foo(0); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((k0 (v1) |
- (InvokeContinuation return (v1)))) |
- (InvokeMethod a foo (v0) k0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- var a = ""; |
- return a.foo(0, 1); |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (String ""))) |
- (LetPrim (v1 (Constant (Int 0))) |
- (LetPrim (v2 (Constant (Int 1))) |
- (LetCont ((k0 (v3) |
- (InvokeContinuation return (v3)))) |
- (InvokeMethod v0 foo (v1 v2) k0)))))) |
-'''), |
- ]), |
- |
- const Group('Binary expressions', const [ |
- const TestSpec(''' |
-main() { |
- return 0 + ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 + (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 - ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 - (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 * ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 * (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 / ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 / (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 ~/ ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 ~/ (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 < ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 < (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 <= ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 <= (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 > ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 > (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 >= ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 >= (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 << ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 << (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 >> ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 >> (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 & ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 & (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 | ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 | (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 ^ ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 ^ (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 == ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 == (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 != ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (LetCont ((k1 (v3) |
- (InvokeContinuation return (v3)))) |
- (LetCont ((k2 () |
- (LetPrim (v4 (Constant (Bool false))) |
- (InvokeContinuation k1 (v4)))) |
- (k3 () |
- (LetPrim (v5 (Constant (Bool true))) |
- (InvokeContinuation k1 (v5))))) |
- (Branch (IsTrue v2) k2 k3))))) |
- (InvokeMethod v0 == (v1) k0))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 && ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((k0 (v1) |
- (InvokeContinuation return (v1)))) |
- (LetCont ((k1 () |
- (LetPrim (v2 (Constant (String ""))) |
- (LetCont ((k2 () |
- (LetPrim (v3 (Constant (Bool true))) |
- (InvokeContinuation k0 (v3)))) |
- (k3 () |
- (LetPrim (v4 (Constant (Bool false))) |
- (InvokeContinuation k0 (v4))))) |
- (Branch (IsTrue v2) k2 k3)))) |
- (k4 () |
- (LetPrim (v5 (Constant (Bool false))) |
- (InvokeContinuation k0 (v5))))) |
- (Branch (IsTrue v0) k1 k4))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 || ""; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((k0 (v1) |
- (InvokeContinuation return (v1)))) |
- (LetCont ((k1 () |
- (LetPrim (v2 (Constant (Bool true))) |
- (InvokeContinuation k0 (v2)))) |
- (k2 () |
- (LetPrim (v3 (Constant (String ""))) |
- (LetCont ((k3 () |
- (LetPrim (v4 (Constant (Bool true))) |
- (InvokeContinuation k0 (v4)))) |
- (k4 () |
- (LetPrim (v5 (Constant (Bool false))) |
- (InvokeContinuation k0 (v5))))) |
- (Branch (IsTrue v3) k3 k4))))) |
- (Branch (IsTrue v0) k1 k2))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 + "" * 2; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetPrim (v2 (Constant (Int 2))) |
- (LetCont ((k0 (v3) |
- (LetCont ((k1 (v4) |
- (InvokeContinuation return (v4)))) |
- (InvokeMethod v0 + (v3) k1)))) |
- (InvokeMethod v1 * (v2) k0)))))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return 0 * "" + 2; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String ""))) |
- (LetCont ((k0 (v2) |
- (LetPrim (v3 (Constant (Int 2))) |
- (LetCont ((k1 (v4) |
- (InvokeContinuation return (v4)))) |
- (InvokeMethod v2 + (v3) k1))))) |
- (InvokeMethod v0 * (v1) k0))))) |
-'''), |
- ]), |
- |
- const Group('If statement', const [ |
- const TestSpec(''' |
-main(a) { |
- if (a) { |
- print(0); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 () |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0))))) |
- (LetCont ((k1 () |
- (LetPrim (v1 (Constant (Int 0))) |
- (LetCont ((k2 (v2) |
- (InvokeContinuation k0 ()))) |
- (InvokeStatic print (v1) k2)))) |
- (k3 () |
- (InvokeContinuation k0 ()))) |
- (Branch (IsTrue a) k1 k3)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- if (a) { |
- print(0); |
- } else { |
- print(1); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 () |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0))))) |
- (LetCont ((k1 () |
- (LetPrim (v1 (Constant (Int 0))) |
- (LetCont ((k2 (v2) |
- (InvokeContinuation k0 ()))) |
- (InvokeStatic print (v1) k2)))) |
- (k3 () |
- (LetPrim (v3 (Constant (Int 1))) |
- (LetCont ((k4 (v4) |
- (InvokeContinuation k0 ()))) |
- (InvokeStatic print (v3) k4))))) |
- (Branch (IsTrue a) k1 k3)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- if (a) { |
- print(0); |
- } else { |
- print(1); |
- print(2); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 () |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0))))) |
- (LetCont ((k1 () |
- (LetPrim (v1 (Constant (Int 0))) |
- (LetCont ((k2 (v2) |
- (InvokeContinuation k0 ()))) |
- (InvokeStatic print (v1) k2)))) |
- (k3 () |
- (LetPrim (v3 (Constant (Int 1))) |
- (LetCont ((k4 (v4) |
- (LetPrim (v5 (Constant (Int 2))) |
- (LetCont ((k5 (v6) |
- (InvokeContinuation k0 ()))) |
- (InvokeStatic print (v5) k5))))) |
- (InvokeStatic print (v3) k4))))) |
- (Branch (IsTrue a) k1 k3)))) |
-'''), |
- ]), |
- |
- const Group('Conditional expression', const [ |
- const TestSpec(''' |
-main(a) { |
- return a ? print(0) : print(1); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (LetCont ((k1 () |
- (LetPrim (v1 (Constant (Int 0))) |
- (LetCont ((k2 (v2) |
- (InvokeContinuation k0 (v2)))) |
- (InvokeStatic print (v1) k2)))) |
- (k3 () |
- (LetPrim (v3 (Constant (Int 1))) |
- (LetCont ((k4 (v4) |
- (InvokeContinuation k0 (v4)))) |
- (InvokeStatic print (v3) k4))))) |
- (Branch (IsTrue a) k1 k3)))) |
-'''), |
- ]), |
- |
- |
- // These test that unreachable statements are skipped within a block. |
- const Group('Block statements', const <TestSpec>[ |
- const TestSpec(''' |
-main(a) { |
- return 0; |
- return 1; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (Int 0))) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- if (a) { |
- return 0; |
- return 1; |
- } else { |
- return 2; |
- return 3; |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 () |
- (LetPrim (v0 (Constant (Int 0))) |
- (InvokeContinuation return (v0)))) |
- (k1 () |
- (LetPrim (v1 (Constant (Int 2))) |
- (InvokeContinuation return (v1))))) |
- (Branch (IsTrue a) k0 k1))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- if (a) { |
- print(0); |
- return 0; |
- return 1; |
- } else { |
- print(2); |
- return 2; |
- return 3; |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 () |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((k1 (v1) |
- (LetPrim (v2 (Constant (Int 0))) |
- (InvokeContinuation return (v2))))) |
- (InvokeStatic print (v0) k1)))) |
- (k2 () |
- (LetPrim (v3 (Constant (Int 2))) |
- (LetCont ((k3 (v4) |
- (LetPrim (v5 (Constant (Int 2))) |
- (InvokeContinuation return (v5))))) |
- (InvokeStatic print (v3) k3))))) |
- (Branch (IsTrue a) k0 k2))) |
-'''), |
- ]), |
- |
- const Group('Constructor invocation', const <TestSpec>[ |
- const TestSpec(''' |
-main(a) { |
- new Object(); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (LetPrim (v1 (Constant (Null))) |
- (InvokeContinuation return (v1))))) |
- (InvokeConstructor Object () k0))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- new Deprecated(""); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (String ""))) |
- (LetCont ((k0 (v1) |
- (LetPrim (v2 (Constant (Null))) |
- (InvokeContinuation return (v2))))) |
- (InvokeConstructor Deprecated (v0) k0)))) |
-'''), |
- ]), |
- |
- const Group('List literal', const <TestSpec>[ |
- const TestSpec(''' |
-main() { |
- return []; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (LiteralList ())) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return [0]; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (LiteralList (v0))) |
- (InvokeContinuation return (v1))))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return [0, 1, a]; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (Int 1))) |
- (LetPrim (v2 (LiteralList (v0 v1 a))) |
- (InvokeContinuation return (v2)))))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return [0, [1], [a, [3]]]; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (Int 1))) |
- (LetPrim (v2 (LiteralList (v1))) |
- (LetPrim (v3 (Constant (Int 3))) |
- (LetPrim (v4 (LiteralList (v3))) |
- (LetPrim (v5 (LiteralList (a v4))) |
- (LetPrim (v6 (LiteralList (v0 v2 v5))) |
- (InvokeContinuation return (v6)))))))))) |
-'''), |
- ]), |
- |
- const Group('Map literal', const <TestSpec>[ |
- const TestSpec(''' |
-main() { |
- return {}; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (LiteralMap () ())) |
- (InvokeContinuation return (v0)))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- return {"a": 0}; |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (String "a"))) |
- (LetPrim (v1 (Constant (Int 0))) |
- (LetPrim (v2 (LiteralMap (v0) (v1))) |
- (InvokeContinuation return (v2)))))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return {"a": 0, "b": 1, "c": a}; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (String "a"))) |
- (LetPrim (v1 (Constant (Int 0))) |
- (LetPrim (v2 (Constant (String "b"))) |
- (LetPrim (v3 (Constant (Int 1))) |
- (LetPrim (v4 (Constant (String "c"))) |
- (LetPrim (v5 (LiteralMap (v0 v2 v4) (v1 v3 a))) |
- (InvokeContinuation return (v5))))))))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return {0: "a", 1: {2: "b"}, a: {3: "c"}}; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetPrim (v1 (Constant (String "a"))) |
- (LetPrim (v2 (Constant (Int 1))) |
- (LetPrim (v3 (Constant (Int 2))) |
- (LetPrim (v4 (Constant (String "b"))) |
- (LetPrim (v5 (LiteralMap (v3) (v4))) |
- (LetPrim (v6 (Constant (Int 3))) |
- (LetPrim (v7 (Constant (String "c"))) |
- (LetPrim (v8 (LiteralMap (v6) (v7))) |
- (LetPrim (v9 (LiteralMap (v0 v2 a) (v1 v5 v8))) |
- (InvokeContinuation return (v9))))))))))))) |
-'''), |
- ]), |
- |
- const Group('For loop', const <TestSpec>[ |
- const TestSpec(''' |
-main() { |
- for (;;) {} |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetCont ((rec k0 () |
- (LetPrim (v0 (Constant (Bool true))) |
- (LetCont ((k1 () |
- (LetPrim (v1 (Constant (Null))) |
- (InvokeContinuation return (v1)))) |
- (k2 () |
- (InvokeContinuation rec k0 ()))) |
- (Branch (IsTrue v0) k2 k1))))) |
- (InvokeContinuation k0 ()))) |
-'''), |
- |
-const TestSpec(''' |
-main() { |
- for (var i = 0; i < 10; i = i + 1) { |
- print(i); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((rec k0 (v1) |
- (LetPrim (v2 (Constant (Int 10))) |
- (LetCont ((k1 (v3) |
- (LetCont ((k2 () |
- (LetPrim (v4 (Constant (Null))) |
- (InvokeContinuation return (v4)))) |
- (k3 () |
- (LetCont ((k4 (v5) |
- (LetPrim (v6 (Constant (Int 1))) |
- (LetCont ((k5 (v7) |
- (InvokeContinuation rec k0 (v7)))) |
- (InvokeMethod v1 + (v6) k5))))) |
- (InvokeStatic print (v1) k4)))) |
- (Branch (IsTrue v3) k3 k2)))) |
- (InvokeMethod v1 < (v2) k1))))) |
- (InvokeContinuation k0 (v0))))) |
-'''), |
- |
-const TestSpec(''' |
-main(i) { |
- for (i = 0; i < 10; i = i + 1) { |
- print(i); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (i) return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((rec k0 (v1) |
- (LetPrim (v2 (Constant (Int 10))) |
- (LetCont ((k1 (v3) |
- (LetCont ((k2 () |
- (LetPrim (v4 (Constant (Null))) |
- (InvokeContinuation return (v4)))) |
- (k3 () |
- (LetCont ((k4 (v5) |
- (LetPrim (v6 (Constant (Int 1))) |
- (LetCont ((k5 (v7) |
- (InvokeContinuation rec k0 (v7)))) |
- (InvokeMethod v1 + (v6) k5))))) |
- (InvokeStatic print (v1) k4)))) |
- (Branch (IsTrue v3) k3 k2)))) |
- (InvokeMethod v1 < (v2) k1))))) |
- (InvokeContinuation k0 (v0))))) |
-'''), |
- ]), |
- |
- const Group('While loop', const <TestSpec>[ |
- const TestSpec(''' |
-main() { |
- while (true) {} |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetCont ((rec k0 () |
- (LetPrim (v0 (Constant (Bool true))) |
- (LetCont ((k1 () |
- (LetPrim (v1 (Constant (Null))) |
- (InvokeContinuation return (v1)))) |
- (k2 () |
- (InvokeContinuation rec k0 ()))) |
- (Branch (IsTrue v0) k2 k1))))) |
- (InvokeContinuation k0 ()))) |
-'''), |
- |
-const TestSpec(''' |
-main() { |
- var i = 0; |
- while (i < 10) { |
- print(i); |
- i = i + 1; |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (LetCont ((rec k0 (v1) |
- (LetPrim (v2 (Constant (Int 10))) |
- (LetCont ((k1 (v3) |
- (LetCont ((k2 () |
- (LetPrim (v4 (Constant (Null))) |
- (InvokeContinuation return (v4)))) |
- (k3 () |
- (LetCont ((k4 (v5) |
- (LetPrim (v6 (Constant (Int 1))) |
- (LetCont ((k5 (v7) |
- (InvokeContinuation rec k0 (v7)))) |
- (InvokeMethod v1 + (v6) k5))))) |
- (InvokeStatic print (v1) k4)))) |
- (Branch (IsTrue v3) k3 k2)))) |
- (InvokeMethod v1 < (v2) k1))))) |
- (InvokeContinuation k0 (v0))))) |
-'''), |
- ]), |
- |
- const Group('Type operators', const <TestSpec>[ |
- const TestSpec(''' |
-main(a) { |
- return a is String; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (TypeOperator is a String () k0))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return a is List<String>; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (TypeOperator is a List<String> () k0))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return a is Comparator<String>; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (TypeOperator is a Comparator<String> () k0))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return a is! String; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (LetCont ((k1 (v1) |
- (InvokeContinuation return (v1)))) |
- (LetCont ((k2 () |
- (LetPrim (v2 (Constant (Bool false))) |
- (InvokeContinuation k1 (v2)))) |
- (k3 () |
- (LetPrim (v3 (Constant (Bool true))) |
- (InvokeContinuation k1 (v3))))) |
- (Branch (IsTrue v0) k2 k3))))) |
- (TypeOperator is a String () k0))) |
-'''), |
- |
-const TestSpec(''' |
-main(a) { |
- return a as String; |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (TypeOperator as a String () k0))) |
-'''), |
- ]), |
- |
- const Group('For in loop', const <TestSpec>[ |
-// TODO(johnniwinther): Add tests for `i` as top-level, static and instance |
-// fields. |
- const TestSpec(''' |
-main(a) { |
- for (var i in a) { |
- print(i); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (LetCont ((rec k1 (v1) |
- (LetCont ((k2 (v2) |
- (LetCont ((k3 () |
- (LetPrim (v3 (Constant (Null))) |
- (InvokeContinuation return (v3)))) |
- (k4 () |
- (LetPrim (v4 (Constant (Null))) |
- (LetCont ((k5 (v5) |
- (LetCont ((k6 (v6) |
- (InvokeContinuation rec k1 (v1)))) |
- (InvokeStatic print (v5) k6)))) |
- (InvokeMethod v0 current () k5))))) |
- (Branch (IsTrue v2) k4 k3)))) |
- (InvokeMethod v0 moveNext () k2)))) |
- (InvokeContinuation k1 (a))))) |
- (InvokeMethod a iterator () k0))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- for (var i in a) { |
- print(i); |
- i = 0; |
- print(i); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (LetCont ((rec k1 (v1) |
- (LetCont ((k2 (v2) |
- (LetCont ((k3 () |
- (LetPrim (v3 (Constant (Null))) |
- (InvokeContinuation return (v3)))) |
- (k4 () |
- (LetPrim (v4 (Constant (Null))) |
- (LetCont ((k5 (v5) |
- (LetCont ((k6 (v6) |
- (LetPrim (v7 (Constant (Int 0))) |
- (LetCont ((k7 (v8) |
- (InvokeContinuation rec k1 (v1)))) |
- (InvokeStatic print (v7) k7))))) |
- (InvokeStatic print (v5) k6)))) |
- (InvokeMethod v0 current () k5))))) |
- (Branch (IsTrue v2) k4 k3)))) |
- (InvokeMethod v0 moveNext () k2)))) |
- (InvokeContinuation k1 (a))))) |
- (InvokeMethod a iterator () k0))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- var i; |
- for (i in a) { |
- print(i); |
- } |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (Constant (Null))) |
- (LetCont ((k0 (v1) |
- (LetCont ((rec k1 (v2 v3) |
- (LetCont ((k2 (v4) |
- (LetCont ((k3 () |
- (LetPrim (v5 (Constant (Null))) |
- (InvokeContinuation return (v5)))) |
- (k4 () |
- (LetCont ((k5 (v6) |
- (LetCont ((k6 (v7) |
- (InvokeContinuation rec k1 (v2 v6)))) |
- (InvokeStatic print (v6) k6)))) |
- (InvokeMethod v1 current () k5)))) |
- (Branch (IsTrue v4) k4 k3)))) |
- (InvokeMethod v1 moveNext () k2)))) |
- (InvokeContinuation k1 (a v0))))) |
- (InvokeMethod a iterator () k0)))) |
-'''), |
- ]), |
- |
- const Group('Local functions', const <TestSpec>[ |
- const TestSpec(''' |
-main(a) { |
- local() {} |
- return local(); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (CreateFunction |
- (FunctionDefinition local () () return |
- (LetPrim (v1 (Constant (Null))) |
- (InvokeContinuation return (v1)))))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 call () k0)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- local() {} |
- var l = local; |
- return l(); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (CreateFunction |
- (FunctionDefinition local () () return |
- (LetPrim (v1 (Constant (Null))) |
- (InvokeContinuation return (v1)))))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 call () k0)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- return () {}(); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetPrim (v0 (CreateFunction |
- (FunctionDefinition () () return |
- (LetPrim (v1 (Constant (Null))) |
- (InvokeContinuation return (v1)))))) |
- (LetCont ((k0 (v2) |
- (InvokeContinuation return (v2)))) |
- (InvokeMethod v0 call () k0)))) |
-'''), |
- |
- const TestSpec(''' |
-main(a) { |
- var c = a ? () { return 0; } : () { return 1; } |
- return c(); |
-} |
-''', ''' |
-(FunctionDefinition main () (a) return |
- (LetCont ((k0 (v0) |
- (LetCont ((k1 (v1) |
- (InvokeContinuation return (v1)))) |
- (InvokeMethod v0 call () k1)))) |
- (LetCont ((k2 () |
- (LetPrim (v2 (CreateFunction |
- (FunctionDefinition () () return |
- (LetPrim (v3 (Constant (Int 0))) |
- (InvokeContinuation return (v3)))))) |
- (InvokeContinuation k0 (v2)))) |
- (k3 () |
- (LetPrim (v4 (CreateFunction |
- (FunctionDefinition () () return |
- (LetPrim (v5 (Constant (Int 1))) |
- (InvokeContinuation return (v5)))))) |
- (InvokeContinuation k0 (v4))))) |
- (Branch (IsTrue a) k2 k3)))) |
-'''), |
- ]), |
- |
- const Group('Top level field', const <TestSpec>[ |
- const TestSpec(''' |
-var field; |
-main(args) { |
- return field; |
-} |
-''', const { |
- 'main': ''' |
-(FunctionDefinition main () (args) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (GetLazyStatic field k0))) |
-''', |
- 'field': ''' |
-(FieldDefinition field) |
-'''}), |
- |
- const TestSpec(''' |
-var field = null; |
-main(args) { |
- return field; |
-} |
-''', const { |
- 'main': ''' |
-(FunctionDefinition main () (args) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (GetLazyStatic field k0))) |
-''', |
- 'field': ''' |
-(FieldDefinition field () return |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''}), |
- |
- const TestSpec(''' |
-var field = 0; |
-main(args) { |
- return field; |
-} |
-''', const { |
- 'main': ''' |
-(FunctionDefinition main () (args) return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (GetLazyStatic field k0))) |
-''', |
- 'field': ''' |
-(FieldDefinition field () return |
- (LetPrim (v0 (Constant (Int 0))) |
- (InvokeContinuation return (v0)))) |
-'''}), |
- |
- const TestSpec(''' |
-var field; |
-main(args) { |
- field = args.length; |
- return field; |
-} |
-''', ''' |
-(FunctionDefinition main () (args) return |
- (LetCont ((k0 (v0) |
- (SetStatic field v0 |
- (LetCont ((k1 (v1) |
- (InvokeContinuation return (v1)))) |
- (GetLazyStatic field k1))))) |
- (InvokeMethod args length () k0))) |
-'''), |
- ]), |
- |
- const Group('Closure variables', const <TestSpec>[ |
- const TestSpec(''' |
-main(x,foo) { |
- print(x); |
- getFoo() => foo; |
- print(getFoo()); |
-} |
-''', ''' |
-(FunctionDefinition main () (x foo) return |
- (LetCont ((k0 (v0) |
- (LetPrim (v1 (CreateFunction |
- (FunctionDefinition getFoo () () return |
- (LetPrim (v2 (GetMutableVariable foo)) |
- (InvokeContinuation return (v2)))))) |
- (LetCont ((k1 (v3) |
- (LetCont ((k2 (v4) |
- (LetPrim (v5 (Constant (Null))) |
- (InvokeContinuation return (v5))))) |
- (InvokeStatic print (v3) k2)))) |
- (InvokeMethod v1 call () k1))))) |
- (InvokeStatic print (x) k0))) |
-''', skipInAnalyzerFrontend: true) |
- ]), |
- |
- const Group('Constructors', const <TestSpec>[ |
- const TestSpec(''' |
-class C {} |
-main() { |
- return new C(); |
-} |
-''', |
- const { |
-'main': ''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (InvokeConstructor C () k0))) |
-''', |
-'C.': ''' |
-(ConstructorDefinition (this) () return ( |
- ) |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''}), |
- |
- const TestSpec(''' |
-class C { |
- C() {} |
-} |
-main() { |
- return new C(); |
-} |
-''', |
- const { |
-'main': ''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (InvokeConstructor C () k0))) |
-''', |
-'C.': ''' |
-(ConstructorDefinition (this) () return ( |
- ) |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''}), |
- |
- const TestSpec(''' |
-class B {} |
-class C extends B { |
- C() {} |
-} |
-main() { |
- return new C(); |
-} |
-''', |
- const { |
-'main': ''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (InvokeConstructor C () k0))) |
-''', |
-'B.': ''' |
-(ConstructorDefinition (this) () return ( |
- ) |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-''', |
-'C.': ''' |
-(ConstructorDefinition (this) () return ( |
- ) |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''}), |
- |
- const TestSpec(''' |
-class B { |
- B() {} |
-} |
-class C extends B {} |
-main() { |
- return new C(); |
-} |
-''', |
- const { |
-'main': ''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 (v0) |
- (InvokeContinuation return (v0)))) |
- (InvokeConstructor C () k0))) |
-''', |
-'B.': ''' |
-(ConstructorDefinition (this) () return ( |
- ) |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-''', |
-'C.': ''' |
-(ConstructorDefinition (this) () return ( |
- ) |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''}), |
- ]), |
- |
- const Group('Instance method', const <TestSpec>[ |
- const TestSpec(''' |
-class C { |
- C() {} |
- foo() {} |
-} |
-main() { |
- return new C().foo(); |
-} |
-''', |
- const { |
-'main': ''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 (v0) |
- (LetCont ((k1 (v1) |
- (InvokeContinuation return (v1)))) |
- (InvokeMethod v0 foo () k1)))) |
- (InvokeConstructor C () k0))) |
-''', |
-'C.foo': ''' |
-(FunctionDefinition foo (this) () return |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0)))) |
-'''}), |
- ]), |
- |
- |
- const Group('Try-catch', const <TestSpec>[ |
- const TestSpec(''' |
-main() { |
- try {} catch (e) {} |
-} |
-''', |
-''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 () |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0))))) |
- (LetHandler ((v1 v2) |
- (InvokeContinuation k0 ())) |
- (InvokeContinuation k0 ())))) |
-'''), |
- |
- const TestSpec(''' |
-main() { |
- try { |
- return; |
- } catch (e) {} |
-} |
-''', |
-''' |
-(FunctionDefinition main () () return |
- (LetCont ((k0 () |
- (LetPrim (v0 (Constant (Null))) |
- (InvokeContinuation return (v0))))) |
- (LetHandler ((v1 v2) |
- (InvokeContinuation k0 ())) |
- (LetPrim (v3 (Constant (Null))) |
- (InvokeContinuation return (v3)))))) |
-'''), |
- ]), |
-]; |