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

Unified Diff: compiler/javatests/com/google/dart/compiler/resolver/CompileTimeConstantTest.java

Issue 10582013: Issue 1655. Check initializer values of const constructors (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 6 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/resolver/CompileTimeConstantTest.java
diff --git a/compiler/javatests/com/google/dart/compiler/resolver/CompileTimeConstantTest.java b/compiler/javatests/com/google/dart/compiler/resolver/CompileTimeConstantTest.java
index eb02b945c68c2d3b2bc67491eddd0d4e0d18f064..d69e43777b3aabadec476e8848fff4e1efdfea0c 100644
--- a/compiler/javatests/com/google/dart/compiler/resolver/CompileTimeConstantTest.java
+++ b/compiler/javatests/com/google/dart/compiler/resolver/CompileTimeConstantTest.java
@@ -34,6 +34,72 @@ public class CompileTimeConstantTest extends ResolverTestCase {
"}"));
}
+ /**
+ * <p>
+ * http://code.google.com/p/dart/issues/detail?id=1655
+ */
+ public void test_constConstructor_nonConstInitializerValue() {
+ resolveAndTestCtConstExpectErrors(
+ Joiner.on("\n").join(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class Object {}",
+ "foo() {}",
+ "class A {",
+ " final v;",
+ " const A() : v = foo();",
+ "}",
+ ""),
+ errEx(ResolverErrorCode.EXPECTED_CONSTANT_EXPRESSION, 6, 18, 5));
+ }
+
+ /**
+ * At compile time we "trust" user that parameter will have correct type.
+ */
+ public void test_constConstructor_constInitializerValue_plusDynamic() {
+ resolveAndTestCtConstExpectErrors(
+ Joiner.on("\n").join(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class Object {}",
+ "class A {",
+ " final v;",
+ " const A(var p) : v = 100 + p;",
+ "}",
+ ""));
+ }
+
+ public void test_constConstructor_constInitializerValue_boolNulls() {
+ resolveAndTestCtConstExpectErrors(
+ Joiner.on("\n").join(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class Object {}",
+ "class A {",
+ " final a, b, c, d;",
+ " const A(var p) : ",
+ " a = false || null,",
+ " b = null || false,",
+ " c = null || null,",
+ " d = !null;",
+ "}",
+ ""));
+ }
+
+ public void test_constConstructor_constInitializerValue_numNulls() {
+ resolveAndTestCtConstExpectErrors(
+ Joiner.on("\n").join(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class Object {}",
+ "class A {",
+ " final a, b, c, d, e;",
+ " const A(var p) : ",
+ " a = 1 ^ null,",
+ " b = 1 << null,",
+ " c = 1 & null,",
+ " d = ~null,",
+ " e = -null;",
+ "}",
+ ""));
+ }
+
public void test_nonConstantExpressions() {
resolveAndTestCtConstExpectErrors(
Joiner.on("\n").join(

Powered by Google App Engine
This is Rietveld 408576698