Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Unified Diff: compiler/javatests/com/google/dart/compiler/backend/js/RttTest.java

Issue 9225024: Issue 962. Fix for crash in nested function parameters list code generation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: compiler/javatests/com/google/dart/compiler/backend/js/RttTest.java
diff --git a/compiler/javatests/com/google/dart/compiler/backend/js/RttTest.java b/compiler/javatests/com/google/dart/compiler/backend/js/RttTest.java
index a2e8ac58c4ce5d7d3b63be6c2f84a36bf03d1ced..04c0458070c83cf8a766a186b116d951f5386b3f 100644
--- a/compiler/javatests/com/google/dart/compiler/backend/js/RttTest.java
+++ b/compiler/javatests/com/google/dart/compiler/backend/js/RttTest.java
@@ -1,7 +1,6 @@
// Copyright (c) 2011, 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.
-
package com.google.dart.compiler.backend.js;
import java.io.IOException;
@@ -11,76 +10,96 @@ import java.io.IOException;
*/
public class RttTest extends SnippetTestCase {
private static final String DELIMETERS = "[\\n,;]";
- // private static final String FIELD_DELIMETERS = "[\\n,;.]";
+
+ /**
+ * We should be able to generate RTT information for nested function parameters.
+ * <p>
+ * http://code.google.com/p/dart/issues/detail?id=962
+ */
+ public void test_nestedFunctionParameters() throws Exception {
+ String js =
+ compileSingleUnitSource(
+ makeCode(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class Main {",
+ " foo() {",
+ " f1(f2(f3())) {}",
+ " }",
+ "}",
+ ""),
+ "Main");
+ {
+ String f3 = "RTT.createFunction(null, RTT.dynamicType.$lookupRTT())";
+ String f2 = "RTT.createFunction([" + f3 + "], RTT.dynamicType.$lookupRTT())";
+ String f1 = "RTT.createFunction([" + f2 + "], RTT.dynamicType.$lookupRTT())";
+ assertTrue(js.contains(f1 + ";"));
+ }
+ }
public void testRuntimeTypes() throws IOException {
String js = compileSingleUnit(getName());
-
{
String init = findMarkerAtOccurrence(js, "_marker_B1", DELIMETERS, 1);
assertEquals("var _marker_B1 = $intern(Test_app4a54ba$B$Dart.B$$Factory())", init);
-
String expr = findMarkerAtOccurrence(js, "_marker_B1", "[\\n;]", 2);
- assertEquals("a = !!(tmp$0 = _marker_B1 , tmp$0 != null && tmp$0.$implements$Test_app4a54ba$B$Dart)", expr);
+ assertEquals(
+ "a = !!(tmp$0 = _marker_B1 , tmp$0 != null && tmp$0.$implements$Test_app4a54ba$B$Dart)",
+ expr);
}
-
{
String init = findMarkerAtOccurrence(js, "_marker_B2", DELIMETERS, 1);
assertEquals("var _marker_B2 = Test_app4a54ba$B$Dart.B$$Factory()", init);
}
-
{
String init = findMarkerAtOccurrence(js, "_marker_C1", DELIMETERS, 1);
assertEquals("var _marker_C1 = $intern("
+ "Test_app4a54ba$C$Dart.C$$Factory("
- + "Test_app4a54ba$C$Dart.$lookupRTT())", init);
-
+ + "Test_app4a54ba$C$Dart.$lookupRTT())", init);
String expr = findMarkerAtOccurrence(js, "_marker_C1", "[\\n;]", 2);
- assertEquals("a = !!(tmp$1 = _marker_C1 , tmp$1 != null && tmp$1.$implements$Test_app4a54ba$C$Dart)", expr);
+ assertEquals(
+ "a = !!(tmp$1 = _marker_C1 , tmp$1 != null && tmp$1.$implements$Test_app4a54ba$C$Dart)",
+ expr);
}
-
{
String init = findMarkerAtOccurrence(js, "_marker_C2", DELIMETERS, 1);
assertEquals("var _marker_C2 = $intern(Test_app4a54ba$C$Dart.C$$Factory("
+ "Test_app4a54ba$C$Dart.$lookupRTT([String$Dart.$lookupRTT()]))", init);
-
String expr = findMarkerAtOccurrence(js, "_marker_C2", DELIMETERS, 2);
assertEquals("a = Test_app4a54ba$C$Dart.$lookupRTT([String$Dart.$lookupRTT()])"
+ ".implementedBy(_marker_C2)", expr);
}
-
{
String init = findMarkerAtOccurrence(js, "_marker_C3", DELIMETERS, 1);
assertEquals("var _marker_C3 = "
+ "Test_app4a54ba$C$Dart.C$$Factory("
- + "Test_app4a54ba$C$Dart.$lookupRTT())", init);
+ + "Test_app4a54ba$C$Dart.$lookupRTT())", init);
}
-
{
String init = findMarkerAtOccurrence(js, "_marker_C4", DELIMETERS, 1);
assertEquals("var _marker_C4 = "
+ "Test_app4a54ba$C$Dart.C$$Factory("
- + "Test_app4a54ba$C$Dart.$lookupRTT([Object.$lookupRTT()]))", init);
-
+ + "Test_app4a54ba$C$Dart.$lookupRTT([Object.$lookupRTT()]))", init);
String expr = findMarkerAtOccurrence(js, "_marker_C4", DELIMETERS, 2);
assertEquals("a = Test_app4a54ba$C$Dart.$lookupRTT([Object.$lookupRTT()])"
+ ".implementedBy(_marker_C4)", expr);
}
-
{
String init = findMarkerAtOccurrence(js, "_marker_D1", DELIMETERS, 1);
assertEquals("var _marker_D1 = Test_app4a54ba$D$Dart.D$$Factory(null)", init);
-
String expr = findMarkerAtOccurrence(js, "_marker_D1", "[\\n;]", 2);
- assertEquals("a = !!(tmp$2 = _marker_D1 , tmp$2 != null && tmp$2.$implements$Test_app4a54ba$D$Dart)", expr);
+ assertEquals(
+ "a = !!(tmp$2 = _marker_D1 , tmp$2 != null && tmp$2.$implements$Test_app4a54ba$D$Dart)",
+ expr);
}
-
{
String init = findMarkerAtOccurrence(js, "_marker_D2", DELIMETERS, 1);
- assertEquals("var _marker_D2 = Test_app4a54ba$D$Dart.D$$Factory([String$Dart.$lookupRTT()])", init);
-
+ assertEquals(
+ "var _marker_D2 = Test_app4a54ba$D$Dart.D$$Factory([String$Dart.$lookupRTT()])",
+ init);
String expr = findMarkerAtOccurrence(js, "_marker_D2", "[\\n;]", 2);
- assertEquals("a = Test_app4a54ba$D$Dart.$lookupRTT([String$Dart.$lookupRTT()]).implementedBy(_marker_D2)", expr);
- }
+ assertEquals(
+ "a = Test_app4a54ba$D$Dart.$lookupRTT([String$Dart.$lookupRTT()]).implementedBy(_marker_D2)",
+ expr);
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698