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

Unified Diff: compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java

Issue 9666015: Update analysis to support adjacent string literals (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add back ICE Created 8 years, 9 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
« no previous file with comments | « compiler/java/com/google/dart/compiler/parser/ParserErrorCode.java ('k') | tests/co19/co19-compiler.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java
diff --git a/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java b/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java
index d1bdd9876be2c38a630c853013998770e1ca916a..fdb8cd627899de04a4a3ebb4b90d9bc8190b2d31 100644
--- a/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java
+++ b/compiler/javatests/com/google/dart/compiler/parser/SyntaxTest.java
@@ -21,6 +21,7 @@ import com.google.dart.compiler.ast.DartMethodDefinition;
import com.google.dart.compiler.ast.DartNode;
import com.google.dart.compiler.ast.DartPropertyAccess;
import com.google.dart.compiler.ast.DartStatement;
+import com.google.dart.compiler.ast.DartStringInterpolation;
import com.google.dart.compiler.ast.DartStringLiteral;
import com.google.dart.compiler.ast.DartTryStatement;
import com.google.dart.compiler.ast.DartTypeNode;
@@ -214,13 +215,120 @@ public class SyntaxTest extends AbstractParserTest {
public void testMethodDefinition1() {
DartUnit unit = parseUnit ("phony_method_definition1.dart",
- Joiner.on("\n").join(
- "class A {",
- " pref.A foo() {",
- " return new pref.A();",
- " }",
- "}"));
+ Joiner.on("\n").join(
+ "class A {",
+ " pref.A foo() {",
+ " return new pref.A();",
+ " }",
+ "}"));
+ List<DartNode> nodes = unit.getTopLevelNodes();
+ assertEquals(1, nodes.size());
+ }
+
+ public void testAdjacentStrings1() {
+ DartUnit unit = parseUnit ("phony_adjacent_strings_1.dart",
+ Joiner.on("\n").join(
+ "var a = \"\" \"\";",
+ "var b = \"1\" \"2\" \"3\""));
List<DartNode> nodes = unit.getTopLevelNodes();
- assertEquals(1, nodes.size());
+ assertEquals(2, nodes.size());
+ DartStringLiteral varA = (DartStringLiteral)((DartFieldDefinition)nodes.get(0))
+ .getFields().get(0).getValue();
+ assertEquals("", varA.getValue());
+ DartStringLiteral varB = (DartStringLiteral)((DartFieldDefinition)nodes.get(1))
+ .getFields().get(0).getValue();
+ assertEquals("123", varB.getValue());
+
+ }
+
+ public void testAdjacentStrings2() {
+ DartUnit unit = parseUnit ("phony_adjacent_strings_2.dart",
+ Joiner.on("\n").join(
+ "var c = \"hello\" \"${world}\";",
+ "var d = \"${hello}\" \"world\";",
+ "var e = \"${hello}\" \"${world}\";"));
+ List<DartNode> nodes = unit.getTopLevelNodes();
+ assertEquals(3, nodes.size());
+ DartStringInterpolation varC = (DartStringInterpolation)((DartFieldDefinition)nodes.get(0))
+ .getFields().get(0).getValue();
+
+ List<DartStringLiteral> strings = varC.getStrings();
+ assertEquals(3, strings.size());
+ assertEquals("hello", strings.get(0).getValue());
+ assertEquals("", strings.get(1).getValue());
+ assertEquals("", strings.get(2).getValue());
+ List<DartExpression> expressions = varC.getExpressions();
+ assertEquals(2, expressions.size());
+ assertEquals("", ((DartStringLiteral)expressions.get(0)).getValue());
+ DartIdentifier expr = (DartIdentifier)expressions.get(1);
+ assertEquals("world", expr.getName());
+
+ DartStringInterpolation varD = (DartStringInterpolation)((DartFieldDefinition)nodes.get(1))
+ .getFields().get(0).getValue();
+ strings = varD.getStrings();
+ assertEquals(3, strings.size());
+ assertEquals("", strings.get(0).getValue());
+ assertEquals("", strings.get(1).getValue());
+ assertEquals("world", strings.get(2).getValue());
+ expressions = varD.getExpressions();
+ assertEquals(2, expressions.size());
+ expr = (DartIdentifier)expressions.get(0);
+ assertEquals("hello", expr.getName());
+ assertEquals("", ((DartStringLiteral)expressions.get(1)).getValue());
+
+ DartStringInterpolation varE = (DartStringInterpolation)((DartFieldDefinition)nodes.get(2))
+ .getFields().get(0).getValue();
+ strings = varE.getStrings();
+ assertEquals(4, strings.size());
+ assertEquals("", strings.get(0).getValue());
+ assertEquals("", strings.get(1).getValue());
+ assertEquals("", strings.get(2).getValue());
+ assertEquals("", strings.get(3).getValue());
+ expressions = varE.getExpressions();
+ assertEquals(3, expressions.size());
+ expr = (DartIdentifier)expressions.get(0);
+ assertEquals("hello", expr.getName());
+ assertEquals("", ((DartStringLiteral)expressions.get(1)).getValue());
+ expr = (DartIdentifier)expressions.get(2);
+ assertEquals("world", expr.getName());
+ }
+
+ public void testAdjacentStrings3() {
+ DartUnit unit = parseUnit ("phony_adjacent_strings_2.dart",
+ Joiner.on("\n").join(
+ "var f = \"hello\" \"${world}\" \"!\";",
+ "var g = \"${hello}\" \"world\" \"!\";"));
+ List<DartNode> nodes = unit.getTopLevelNodes();
+ assertEquals(2, nodes.size());
+ DartStringInterpolation varF = (DartStringInterpolation)((DartFieldDefinition)nodes.get(0))
+ .getFields().get(0).getValue();
+
+ List<DartStringLiteral> strings = varF.getStrings();
+ assertEquals(4, strings.size());
+ assertEquals("hello", strings.get(0).getValue());
+ assertEquals("", strings.get(1).getValue());
+ assertEquals("", strings.get(2).getValue());
+ assertEquals("!", strings.get(3).getValue());
+ List<DartExpression> expressions = varF.getExpressions();
+ assertEquals(3, expressions.size());
+ assertEquals("", ((DartStringLiteral)expressions.get(0)).getValue());
+ DartIdentifier expr = (DartIdentifier)expressions.get(1);
+ assertEquals("world", expr.getName());
+ assertEquals("", ((DartStringLiteral)expressions.get(2)).getValue());
+
+ DartStringInterpolation varG = (DartStringInterpolation)((DartFieldDefinition)nodes.get(1))
+ .getFields().get(0).getValue();
+ strings = varG.getStrings();
+ assertEquals(4, strings.size());
+ assertEquals("", strings.get(0).getValue());
+ assertEquals("", strings.get(1).getValue());
+ assertEquals("world", strings.get(2).getValue());
+ assertEquals("!", strings.get(3).getValue());
+ expressions = varG.getExpressions();
+ assertEquals(3, expressions.size());
+ expr = (DartIdentifier)expressions.get(0);
+ assertEquals("hello", expr.getName());
+ assertEquals("", ((DartStringLiteral)expressions.get(1)).getValue());
+ assertEquals("", ((DartStringLiteral)expressions.get(2)).getValue());
}
}
« no previous file with comments | « compiler/java/com/google/dart/compiler/parser/ParserErrorCode.java ('k') | tests/co19/co19-compiler.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698