Index: dart/compiler/javatests/com/google/dart/compiler/type/TypeTestCase.java |
diff --git a/dart/compiler/javatests/com/google/dart/compiler/type/TypeTestCase.java b/dart/compiler/javatests/com/google/dart/compiler/type/TypeTestCase.java |
deleted file mode 100644 |
index fae289ad806bc30e4d78c52bd3b43b0ef304ffe0..0000000000000000000000000000000000000000 |
--- a/dart/compiler/javatests/com/google/dart/compiler/type/TypeTestCase.java |
+++ /dev/null |
@@ -1,199 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-package com.google.dart.compiler.type; |
- |
-import com.google.common.collect.Maps; |
-import com.google.dart.compiler.DartCompilationError; |
-import com.google.dart.compiler.DartCompilerListener; |
-import com.google.dart.compiler.ErrorCode; |
-import com.google.dart.compiler.SubSystem; |
-import com.google.dart.compiler.ast.DartBlock; |
-import com.google.dart.compiler.ast.DartFunction; |
-import com.google.dart.compiler.ast.DartIdentifier; |
-import com.google.dart.compiler.ast.DartInitializer; |
-import com.google.dart.compiler.ast.DartMethodDefinition; |
-import com.google.dart.compiler.ast.DartParameter; |
-import com.google.dart.compiler.ast.DartStatement; |
-import com.google.dart.compiler.ast.DartTypeNode; |
-import com.google.dart.compiler.ast.Modifiers; |
-import com.google.dart.compiler.resolver.ClassElement; |
-import com.google.dart.compiler.resolver.Element; |
-import com.google.dart.compiler.resolver.Elements; |
-import com.google.dart.compiler.resolver.MethodNodeElement; |
-import com.google.dart.compiler.resolver.TypeVariableElement; |
-import com.google.dart.compiler.testing.TestCompilerContext; |
- |
-import junit.framework.TestCase; |
- |
-import org.junit.Assert; |
- |
-import java.util.Arrays; |
-import java.util.Collections; |
-import java.util.LinkedHashMap; |
-import java.util.Map; |
- |
-/** |
- * Common superclass for type tests. |
- */ |
-abstract class TypeTestCase extends TestCase { |
- |
- final Map<String, Element> coreElements = Maps.newHashMap(); |
- final ClassElement object = element("Object", null); |
- final ClassElement function = element("Function", itype(object)); |
- final ClassElement number = element("num", itype(object)); |
- final ClassElement intElement = element("int", itype(number)); |
- final ClassElement doubleElement = element("double", itype(number)); |
- final ClassElement bool = element("bool", itype(object)); |
- final ClassElement string = element("String", itype(object)); |
- final ClassElement iterElement = element("Iterator", itype(object), typeVar("E", itype(object))); |
- final ClassElement list = makeListElement(); |
- final ClassElement map = element("Map", itype(object), |
- typeVar("K", itype(object)), typeVar("V", itype(object))); |
- final ClassElement stackTrace = element("StackTrace", itype(object)); |
- final ClassElement reverseMap = makeReverseMap(map); |
- final InterfaceType objectList = itype(list, itype(object)); |
- final InterfaceType objectMap = itype(map, itype(object), itype(object)); |
- final InterfaceType reverseObjectMap = itype(reverseMap, itype(object), itype(object)); |
- final InterfaceType stringIntMap = itype(map, itype(string), itype(intElement)); |
- final InterfaceType intStringMap = itype(map, itype(intElement), itype(string)); |
- final InterfaceType stringIntReverseMap = itype(reverseMap, itype(string), itype(intElement)); |
- final FunctionType returnObject = ftype(function, itype(object), null, null); |
- final FunctionType returnString = ftype(function, itype(string), null, null); |
- final FunctionType objectToObject = ftype(function, itype(object), null, null, itype(object)); |
- final FunctionType objectToString = ftype(function, itype(string), null, null, itype(object)); |
- final FunctionType stringToObject = ftype(function, itype(object), null, null, itype(string)); |
- final FunctionType stringAndIntToBool = ftype(function, itype(bool), |
- null, null, itype(string), itype(intElement)); |
- final FunctionType stringAndIntToMap = ftype(function, stringIntMap, |
- null, null, itype(string), itype(intElement)); |
- final ClassElement type = element("Type", itype(object)); |
- private int expectedTypeErrors = 0; |
- private int foundTypeErrors = 0; |
- |
- abstract Types getTypes(); |
- |
- ClassElement makeListElement() { |
- final TypeVariable typeVar = typeVar("E", itype(object)); |
- final ClassElement element = element("List", itype(object), typeVar); |
- DartTypeNode returnTypeNode = new DartTypeNode(new DartIdentifier("Iterator"), |
- Arrays.asList(new DartTypeNode(new DartIdentifier("E")))); |
- |
- DartMethodDefinition iteratorMethod = DartMethodDefinition.create( |
- new DartIdentifier("iterator"), new DartFunction(Collections.<DartParameter> emptyList(), |
- -1, -1, -1, 0, new DartBlock(Collections.<DartStatement> emptyList()), returnTypeNode), |
- Modifiers.NONE, Collections.<DartInitializer> emptyList()); |
- MethodNodeElement iteratorMethodElement = Elements.methodFromMethodNode(iteratorMethod, element); |
- Type returnType = Types.interfaceType(iterElement, Arrays.<Type>asList(typeVar)); |
- FunctionType functionType = ftype(function, returnType, Collections.<String,Type>emptyMap(), |
- null); |
- Elements.setType(iteratorMethodElement, functionType); |
- Elements.addMethod(element, iteratorMethodElement); |
- return element; |
- } |
- |
- protected void setExpectedTypeErrorCount(int count) { |
- checkExpectedTypeErrorCount(); |
- expectedTypeErrors = count; |
- foundTypeErrors = 0; |
- } |
- |
- protected void checkExpectedTypeErrorCount(String message) { |
- assertEquals(message, expectedTypeErrors, foundTypeErrors); |
- } |
- |
- protected void checkExpectedTypeErrorCount() { |
- checkExpectedTypeErrorCount(null); |
- } |
- |
- static TypeVariable typeVar(String name, Type bound) { |
- TypeVariableElement element = Elements.typeVariableElement(name, bound); |
- return new TypeVariableImplementation(element); |
- } |
- |
- private ClassElement makeReverseMap(ClassElement map) { |
- TypeVariable K = typeVar("K", itype(object)); |
- TypeVariable V = typeVar("V", itype(object)); |
- return element("ReverseMap", itype(map, V, K), K, V); |
- } |
- |
- static InterfaceType itype(ClassElement element, Type... arguments) { |
- return new InterfaceTypeImplementation(element, Arrays.asList(arguments)); |
- } |
- |
- static FunctionType ftype(ClassElement element, Type returnType, |
- Map<String, Type> namedParameterTypes, Type rest, Type... arguments) { |
- return FunctionTypeImplementation.of(element, Arrays.asList(arguments), null, namedParameterTypes, |
- rest, returnType); |
- } |
- |
- static Map<String, Type> named(Object... pairs) { |
- Map<String, Type> named = new LinkedHashMap<String, Type>(); |
- for (int i = 0; i < pairs.length; i++) { |
- Type type = (Type) pairs[i++]; |
- String name = (String) pairs[i]; |
- named.put(name, type); |
- } |
- return named; |
- } |
- |
- ClassElement element(String name, InterfaceType supertype, TypeVariable... parameters) { |
- ClassElement element = Elements.classNamed(name); |
- element.setSupertype(supertype); |
- element.setType(itype(element, parameters)); |
- coreElements.put(name, element); |
- return element; |
- } |
- |
- void checkSubtype(Type t, Type s) { |
- Assert.assertTrue(getTypes().isSubtype(t, s)); |
- } |
- |
- void checkStrictSubtype(Type t, Type s) { |
- checkSubtype(t, s); |
- checkNotSubtype(s, t); |
- } |
- |
- void checkNotSubtype(Type t, Type s) { |
- Assert.assertFalse(getTypes().isSubtype(t, s)); |
- } |
- |
- void checkNotAssignable(Type t, Type s) { |
- checkNotSubtype(t, s); |
- checkNotSubtype(s, t); |
- } |
- |
- final DartCompilerListener listener = new DartCompilerListener.Empty() { |
- @Override |
- public void onError(DartCompilationError event) { |
- throw new AssertionError(event); |
- } |
- }; |
- |
- final TestCompilerContext context = new TestCompilerContext() { |
- @Override |
- public void onError(DartCompilationError event) { |
- if (event.getErrorCode().getSubSystem() == SubSystem.STATIC_TYPE) { |
- getErrorCodes().add(event.getErrorCode()); |
- foundTypeErrors++; |
- if (expectedTypeErrors - foundTypeErrors < 0) { |
- throw new TestTypeError(event); |
- } |
- } |
- } |
- }; |
- |
- static class TestTypeError extends RuntimeException { |
- final DartCompilationError event; |
- |
- TestTypeError(DartCompilationError event) { |
- super(String.valueOf(event)); |
- this.event = event; |
- } |
- |
- ErrorCode getErrorCode() { |
- return event.getErrorCode(); |
- } |
- } |
-} |