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

Unified Diff: compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilation2Test.java

Issue 10825135: Issue 4238. Infer Element subclass from query() parameter (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 5 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/end2end/inc/IncrementalCompilation2Test.java
diff --git a/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilation2Test.java b/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilation2Test.java
index 277d42ac37cf8a8f2beefbb861cf08cef602f17a..56c5eba8b3e87d36b3243465161aa8e6cf031581 100644
--- a/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilation2Test.java
+++ b/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilation2Test.java
@@ -9,6 +9,7 @@ import static com.google.dart.compiler.common.ErrorExpectation.assertErrors;
import static com.google.dart.compiler.common.ErrorExpectation.errEx;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.dart.compiler.CompilerTestCase;
import com.google.dart.compiler.DartCompilationError;
@@ -35,6 +36,7 @@ import java.io.Reader;
import java.io.Writer;
import java.net.URI;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentSkipListSet;
@@ -68,6 +70,7 @@ public class IncrementalCompilation2Test extends CompilerTestCase {
private IncMockArtifactProvider provider;
private MemoryLibrarySource appSource;
private final List<DartCompilationError> errors = Lists.newArrayList();
+ private final Map<String, DartUnit> units = Maps.newHashMap();
@Override
protected void setUp() throws Exception {
@@ -98,6 +101,8 @@ public class IncrementalCompilation2Test extends CompilerTestCase {
config = null;
provider = null;
appSource = null;
+ errors.clear();
+ units.clear();
}
/**
@@ -880,6 +885,52 @@ public class IncrementalCompilation2Test extends CompilerTestCase {
compile();
assertErrors(errors, errEx(ResolverErrorCode.CANNOT_HIDE_IMPORT_PREFIX, 5, 7, 3));
}
+
+ /**
+ * <p>
+ * http://code.google.com/p/dart/issues/detail?id=4238
+ */
+ public void test_typesPropagation_html_query() throws Exception {
+ appSource.setContent(
+ APP,
+ makeCode(
+ "// filler filler filler filler filler filler filler filler filler filler filler",
+ "#library('application');",
+ "#import('dart:html');",
+ "main() {",
+ " var v1 = query('a');",
+ " var v2 = query('A');",
+ " var v3 = query('body:active');",
+ " var v4 = query('button[foo=\"bar\"]');",
+ " var v5 = query('div.class');",
+ " var v6 = query('input#id');",
+ " // invocation of method",
+ " var m1 = document.query('div');",
+ " // unsupported currently",
+ " var b1 = query('noSuchTag');",
+ " var b2 = query('DART_EDITOR_NO_SUCH_TYPE');",
+ " var b3 = query('body div');",
+ "}",
+ ""));
+ // do compile, no errors expected
+ compile();
+ assertErrors(errors);
+ // validate types
+ DartUnit unit = units.get(APP);
+ assertNotNull(unit);
+ assertInferredElementTypeString(unit, "v1", "AnchorElement");
+ assertInferredElementTypeString(unit, "v2", "AnchorElement");
+ assertInferredElementTypeString(unit, "v3", "BodyElement");
+ assertInferredElementTypeString(unit, "v4", "ButtonElement");
+ assertInferredElementTypeString(unit, "v5", "DivElement");
+ assertInferredElementTypeString(unit, "v6", "InputElement");
+ // invocation of method
+ assertInferredElementTypeString(unit, "m1", "DivElement");
+ // bad cases, or unsupported now
+ assertInferredElementTypeString(unit, "b1", "Element");
+ assertInferredElementTypeString(unit, "b2", "Element");
+ assertInferredElementTypeString(unit, "b3", "Element");
+ }
/**
* Libraries "dart:io" and "dart:html" can not be used together in single application.
@@ -993,6 +1044,7 @@ public class IncrementalCompilation2Test extends CompilerTestCase {
@Override
public void unitCompiled(DartUnit unit) {
compilingUris.remove(unit.getSourceInfo().getSource().getUri());
+ units.put(unit.getSourceName(), unit);
}
};
DartCompiler.compileLib(lib, config, provider, listener);

Powered by Google App Engine
This is Rietveld 408576698