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

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

Issue 9049016: in dartc, generics in Typedef not working as expected, when extending generic type (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merged up to r3100 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/resolver/ResolverCompilerTest.java
diff --git a/compiler/javatests/com/google/dart/compiler/resolver/ResolverCompilerTest.java b/compiler/javatests/com/google/dart/compiler/resolver/ResolverCompilerTest.java
index 27309458cebd0837182d2ad71166b22da9a0c588..9d03150ddeab448641f8d2f85f37b889fde0fe7e 100644
--- a/compiler/javatests/com/google/dart/compiler/resolver/ResolverCompilerTest.java
+++ b/compiler/javatests/com/google/dart/compiler/resolver/ResolverCompilerTest.java
@@ -3,14 +3,19 @@
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.compiler.resolver;
+import static com.google.dart.compiler.common.ErrorExpectation.assertErrors;
+import static com.google.dart.compiler.common.ErrorExpectation.errEx;
+
import com.google.common.base.Joiner;
import com.google.dart.compiler.CompilerTestCase;
import com.google.dart.compiler.DartCompilationError;
+import com.google.dart.compiler.ast.DartFunctionTypeAlias;
import com.google.dart.compiler.ast.DartNewExpression;
import com.google.dart.compiler.ast.DartNode;
import com.google.dart.compiler.ast.DartUnit;
-import static com.google.dart.compiler.common.ErrorExpectation.errEx;
-import static com.google.dart.compiler.common.ErrorExpectation.assertErrors;
+import com.google.dart.compiler.type.FunctionAliasType;
+import com.google.dart.compiler.type.Type;
+import com.google.dart.compiler.type.TypeVariable;
import java.util.List;
@@ -19,6 +24,32 @@ import java.util.List;
* slower, not actually unit test, but easier to use if you need access to DartNode's.
*/
public class ResolverCompilerTest extends CompilerTestCase {
+
+ public void test_parameters_withFunctionAlias() throws Exception {
+ AnalyzeLibraryResult libraryResult =
+ analyzeLibrary(
+ "Test.dart",
+ "typedef List<T> TypeAlias<T, U extends List<T>>(List<T> arg, U u);");
+ assertErrors(libraryResult.getCompilationErrors());
+ DartUnit unit = libraryResult.getLibraryUnitResult().getUnits().iterator().next();
+ DartFunctionTypeAlias typeAlias = findTypedef(unit, "TypeAlias");
+ assertNotNull(typeAlias);
+ FunctionAliasElement element = typeAlias.getSymbol();
+ FunctionAliasType ftype = element.getType();
+ Type returnType = ftype.getElement().getFunctionType().getReturnType();
+ assertEquals("List<TypeAlias.T>", returnType.toString());
+ List<? extends Type> arguments = ftype.getArguments();
+ assertEquals(2, arguments.size());
+ TypeVariable arg0 = (TypeVariable)arguments.get(0);
+ assertEquals("T", arg0.getTypeVariableElement().getName());
+ Type bound0 = arg0.getTypeVariableElement().getBound();
+ assertEquals("Object", bound0.toString());
+ TypeVariable arg1 = (TypeVariable)arguments.get(1);
+ assertEquals("U", arg1.getTypeVariableElement().getName());
+ Type bound1 = arg1.getTypeVariableElement().getBound();
+ assertEquals("List<TypeAlias.T>", bound1.toString());
+ }
+
/**
* We should be able to resolve implicit default constructor.
*/

Powered by Google App Engine
This is Rietveld 408576698