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

Unified Diff: editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/internal/constant/ConstantVisitorTest.java

Issue 613303003: Rework EvaluationResultImpl class hierarchy. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rework to use ErrorReporter Created 6 years, 3 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: editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/internal/constant/ConstantVisitorTest.java
diff --git a/editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/internal/constant/ConstantVisitorTest.java b/editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/internal/constant/ConstantVisitorTest.java
index b0a2ad106d86380862e33b430cbb91f5d9051dee..714b995e4a7e1cdab9aa9a17cc2efabd6644b586 100644
--- a/editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/internal/constant/ConstantVisitorTest.java
+++ b/editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/internal/constant/ConstantVisitorTest.java
@@ -17,18 +17,25 @@ import com.google.dart.engine.ast.CompilationUnit;
import com.google.dart.engine.ast.ConditionalExpression;
import com.google.dart.engine.ast.Expression;
import com.google.dart.engine.ast.InstanceCreationExpression;
+import com.google.dart.engine.ast.NullLiteral;
import com.google.dart.engine.context.AnalysisException;
import com.google.dart.engine.element.ClassElement;
+import com.google.dart.engine.error.CompileTimeErrorCode;
+import com.google.dart.engine.error.GatheringErrorListener;
import com.google.dart.engine.internal.element.ClassElementImpl;
import com.google.dart.engine.internal.element.CompilationUnitElementImpl;
import com.google.dart.engine.internal.element.ConstructorElementImpl;
import com.google.dart.engine.internal.element.FieldFormalParameterElementImpl;
import com.google.dart.engine.internal.element.LibraryElementImpl;
+import com.google.dart.engine.internal.error.ErrorReporter;
import com.google.dart.engine.internal.object.DartObjectImpl;
import com.google.dart.engine.internal.object.IntState;
import com.google.dart.engine.internal.resolver.TestTypeProvider;
import com.google.dart.engine.resolver.ResolverTestCase;
import com.google.dart.engine.scanner.Keyword;
+import com.google.dart.engine.source.NonExistingSource;
+import com.google.dart.engine.source.Source;
+import com.google.dart.engine.source.UriKind;
import static com.google.dart.engine.ast.AstFactory.booleanLiteral;
import static com.google.dart.engine.ast.AstFactory.conditionalExpression;
@@ -52,7 +59,10 @@ public class ConstantVisitorTest extends ResolverTestCase {
booleanLiteral(false),
thenExpression,
elseExpression);
- assertValue(0L, expression.accept(new ConstantVisitor(new TestTypeProvider())));
+ GatheringErrorListener errorListener = new GatheringErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, dummySource());
+ assertValue(0L, expression.accept(new ConstantVisitor(new TestTypeProvider(), errorReporter)));
+ errorListener.assertNoErrors();
}
public void test_visitConditionalExpression_instanceCreation_invalidFieldInitializer() {
@@ -72,18 +82,27 @@ public class ConstantVisitorTest extends ResolverTestCase {
typeName(className),
integer(0L));
expression.setStaticElement(constructorElement);
- expression.accept(new ConstantVisitor(typeProvider));
+ GatheringErrorListener errorListener = new GatheringErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, dummySource());
+ expression.accept(new ConstantVisitor(typeProvider, errorReporter));
+ errorListener.assertErrorsWithCodes(CompileTimeErrorCode.INVALID_CONSTANT);
}
public void test_visitConditionalExpression_nonBooleanCondition() {
Expression thenExpression = integer(1L);
Expression elseExpression = integer(0L);
+ NullLiteral conditionExpression = nullLiteral();
ConditionalExpression expression = conditionalExpression(
- nullLiteral(),
+ conditionExpression,
thenExpression,
elseExpression);
- EvaluationResultImpl result = expression.accept(new ConstantVisitor(new TestTypeProvider()));
- assertInstanceOf(ErrorResult.class, result);
+ GatheringErrorListener errorListener = new GatheringErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, dummySource());
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new TestTypeProvider(),
+ errorReporter));
+ assertNull(result);
+ errorListener.assertErrorsWithCodes(CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL);
}
public void test_visitConditionalExpression_nonConstantElse() {
@@ -93,8 +112,13 @@ public class ConstantVisitorTest extends ResolverTestCase {
booleanLiteral(true),
thenExpression,
elseExpression);
- EvaluationResultImpl result = expression.accept(new ConstantVisitor(new TestTypeProvider()));
- assertInstanceOf(ErrorResult.class, result);
+ GatheringErrorListener errorListener = new GatheringErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, dummySource());
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new TestTypeProvider(),
+ errorReporter));
+ assertNull(result);
+ errorListener.assertErrorsWithCodes(CompileTimeErrorCode.INVALID_CONSTANT);
}
public void test_visitConditionalExpression_nonConstantThen() {
@@ -104,8 +128,13 @@ public class ConstantVisitorTest extends ResolverTestCase {
booleanLiteral(true),
thenExpression,
elseExpression);
- EvaluationResultImpl result = expression.accept(new ConstantVisitor(new TestTypeProvider()));
- assertInstanceOf(ErrorResult.class, result);
+ GatheringErrorListener errorListener = new GatheringErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, dummySource());
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new TestTypeProvider(),
+ errorReporter));
+ assertNull(result);
+ errorListener.assertErrorsWithCodes(CompileTimeErrorCode.INVALID_CONSTANT);
}
public void test_visitConditionalExpression_true() {
@@ -115,7 +144,16 @@ public class ConstantVisitorTest extends ResolverTestCase {
booleanLiteral(true),
thenExpression,
elseExpression);
- assertValue(1L, expression.accept(new ConstantVisitor(new TestTypeProvider())));
+ GatheringErrorListener errorListener = new GatheringErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, dummySource());
+ assertValue(1L, expression.accept(new ConstantVisitor(new TestTypeProvider(), errorReporter)));
+ errorListener.assertNoErrors();
+ }
+
+ private NonExistingSource dummySource() {
+ return new NonExistingSource(
+ "foo.dart",
+ UriKind.FILE_URI);
}
public void test_visitSimpleIdentifier_inEnvironment() throws Exception {
@@ -147,16 +185,23 @@ public class ConstantVisitorTest extends ResolverTestCase {
assertValue(3, evaluateConstant(compilationUnit, "a", null));
}
- private void assertValue(long expectedValue, EvaluationResultImpl result) {
- assertInstanceOf(ValidResult.class, result);
- DartObjectImpl value = ((ValidResult) result).getValue();
- assertEquals("int", value.getType().getName());
- assertEquals(expectedValue, value.getIntValue().longValue());
+ private void assertValue(long expectedValue, DartObjectImpl result) {
+ assertNotNull(result);
+ assertEquals("int", result.getType().getName());
+ assertEquals(expectedValue, result.getIntValue().longValue());
}
- private EvaluationResultImpl evaluateConstant(CompilationUnit compilationUnit, String name,
+ private DartObjectImpl evaluateConstant(CompilationUnit compilationUnit, String name,
HashMap<String, DartObjectImpl> lexicalEnvironment) throws AnalysisException {
+ Source source = compilationUnit.getElement().getSource();
Expression expression = findTopLevelConstantExpression(compilationUnit, name);
- return expression.accept(new ConstantVisitor(getTypeProvider(), lexicalEnvironment));
+ GatheringErrorListener errorListener = new GatheringErrorListener();
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ getTypeProvider(),
+ lexicalEnvironment,
+ errorReporter));
+ errorListener.assertNoErrors();
+ return result;
}
}

Powered by Google App Engine
This is Rietveld 408576698