| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library engine.element_test; | 5 library engine.element_test; |
| 6 | 6 |
| 7 import 'package:analyzer/src/generated/ast.dart'; | 7 import 'package:analyzer/src/generated/ast.dart'; |
| 8 import 'package:analyzer/src/generated/element.dart'; | 8 import 'package:analyzer/src/generated/element.dart'; |
| 9 import 'package:analyzer/src/generated/engine.dart' | 9 import 'package:analyzer/src/generated/engine.dart' |
| 10 show AnalysisContext, AnalysisOptionsImpl; | 10 show AnalysisContext, AnalysisOptionsImpl; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 runReflectiveTests(ElementKindTest); | 25 runReflectiveTests(ElementKindTest); |
| 26 runReflectiveTests(FieldElementImplTest); | 26 runReflectiveTests(FieldElementImplTest); |
| 27 runReflectiveTests(FunctionTypeImplTest); | 27 runReflectiveTests(FunctionTypeImplTest); |
| 28 runReflectiveTests(InterfaceTypeImplTest); | 28 runReflectiveTests(InterfaceTypeImplTest); |
| 29 runReflectiveTests(TypeParameterTypeImplTest); | 29 runReflectiveTests(TypeParameterTypeImplTest); |
| 30 runReflectiveTests(VoidTypeImplTest); | 30 runReflectiveTests(VoidTypeImplTest); |
| 31 runReflectiveTests(ClassElementImplTest); | 31 runReflectiveTests(ClassElementImplTest); |
| 32 runReflectiveTests(CompilationUnitElementImplTest); | 32 runReflectiveTests(CompilationUnitElementImplTest); |
| 33 runReflectiveTests(ElementLocationImplTest); | 33 runReflectiveTests(ElementLocationImplTest); |
| 34 runReflectiveTests(ElementImplTest); | 34 runReflectiveTests(ElementImplTest); |
| 35 runReflectiveTests(HtmlElementImplTest); | |
| 36 runReflectiveTests(LibraryElementImplTest); | 35 runReflectiveTests(LibraryElementImplTest); |
| 37 runReflectiveTests(MethodElementImplTest); | 36 runReflectiveTests(MethodElementImplTest); |
| 38 runReflectiveTests(MultiplyDefinedElementImplTest); | 37 runReflectiveTests(MultiplyDefinedElementImplTest); |
| 39 runReflectiveTests(ParameterElementImplTest); | 38 runReflectiveTests(ParameterElementImplTest); |
| 40 } | 39 } |
| 41 | 40 |
| 42 @reflectiveTest | 41 @reflectiveTest |
| 43 class ClassElementImplTest extends EngineTestCase { | 42 class ClassElementImplTest extends EngineTestCase { |
| 44 void test_computeNode_ClassDeclaration() { | 43 void test_computeNode_ClassDeclaration() { |
| 45 AnalysisContextHelper contextHelper = new AnalysisContextHelper(); | 44 AnalysisContextHelper contextHelper = new AnalysisContextHelper(); |
| (...skipping 1836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1882 ElementFactory.functionTypeAliasElement('f'); | 1881 ElementFactory.functionTypeAliasElement('f'); |
| 1883 FunctionTypeAliasElementImpl g = | 1882 FunctionTypeAliasElementImpl g = |
| 1884 ElementFactory.functionTypeAliasElement('g'); | 1883 ElementFactory.functionTypeAliasElement('g'); |
| 1885 f.typeParameters = [ElementFactory.typeParameterElement('T')]; | 1884 f.typeParameters = [ElementFactory.typeParameterElement('T')]; |
| 1886 f.returnType = g.type; | 1885 f.returnType = g.type; |
| 1887 FunctionTypeImpl paramType = f.type.returnType; | 1886 FunctionTypeImpl paramType = f.type.returnType; |
| 1888 expect(paramType.prunedTypedefs, hasLength(1)); | 1887 expect(paramType.prunedTypedefs, hasLength(1)); |
| 1889 expect(paramType.prunedTypedefs[0], same(f)); | 1888 expect(paramType.prunedTypedefs[0], same(f)); |
| 1890 } | 1889 } |
| 1891 | 1890 |
| 1892 void test_withTypeArguments() { | |
| 1893 ClassElementImpl enclosingClass = ElementFactory.classElement2("C", ["E"]); | |
| 1894 MethodElementImpl methodElement = | |
| 1895 new MethodElementImpl.forNode(AstFactory.identifier3("m")); | |
| 1896 enclosingClass.methods = <MethodElement>[methodElement]; | |
| 1897 FunctionTypeImpl type = new FunctionTypeImpl(methodElement); | |
| 1898 DartType expectedType = enclosingClass.typeParameters[0].type; | |
| 1899 List<DartType> arguments = type.typeArguments; | |
| 1900 expect(arguments, hasLength(1)); | |
| 1901 expect(arguments[0], expectedType); | |
| 1902 } | |
| 1903 | |
| 1904 void test_substitute2_equal() { | 1891 void test_substitute2_equal() { |
| 1905 ClassElementImpl definingClass = ElementFactory.classElement2("C", ["E"]); | 1892 ClassElementImpl definingClass = ElementFactory.classElement2("C", ["E"]); |
| 1906 TypeParameterType parameterType = definingClass.typeParameters[0].type; | 1893 TypeParameterType parameterType = definingClass.typeParameters[0].type; |
| 1907 MethodElementImpl functionElement = | 1894 MethodElementImpl functionElement = |
| 1908 new MethodElementImpl.forNode(AstFactory.identifier3("m")); | 1895 new MethodElementImpl.forNode(AstFactory.identifier3("m")); |
| 1909 String namedParameterName = "c"; | 1896 String namedParameterName = "c"; |
| 1910 functionElement.parameters = <ParameterElement>[ | 1897 functionElement.parameters = <ParameterElement>[ |
| 1911 ElementFactory.requiredParameter2("a", parameterType), | 1898 ElementFactory.requiredParameter2("a", parameterType), |
| 1912 ElementFactory.positionalParameter2("b", parameterType), | 1899 ElementFactory.positionalParameter2("b", parameterType), |
| 1913 ElementFactory.namedParameter2(namedParameterName, parameterType) | 1900 ElementFactory.namedParameter2(namedParameterName, parameterType) |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1978 expect(t.type.toString(), '() \u2192 () \u2192 ...'); | 1965 expect(t.type.toString(), '() \u2192 () \u2192 ...'); |
| 1979 } | 1966 } |
| 1980 | 1967 |
| 1981 void test_toString_recursive_via_interface_type() { | 1968 void test_toString_recursive_via_interface_type() { |
| 1982 FunctionTypeAliasElementImpl f = | 1969 FunctionTypeAliasElementImpl f = |
| 1983 ElementFactory.functionTypeAliasElement('f'); | 1970 ElementFactory.functionTypeAliasElement('f'); |
| 1984 ClassElementImpl c = ElementFactory.classElement2('C', ['T']); | 1971 ClassElementImpl c = ElementFactory.classElement2('C', ['T']); |
| 1985 f.returnType = c.type.substitute4([f.type]); | 1972 f.returnType = c.type.substitute4([f.type]); |
| 1986 expect(f.type.toString(), '() \u2192 C<...>'); | 1973 expect(f.type.toString(), '() \u2192 C<...>'); |
| 1987 } | 1974 } |
| 1988 } | |
| 1989 | 1975 |
| 1990 @reflectiveTest | 1976 void test_withTypeArguments() { |
| 1991 class HtmlElementImplTest extends EngineTestCase { | 1977 ClassElementImpl enclosingClass = ElementFactory.classElement2("C", ["E"]); |
| 1992 void test_equals_differentSource() { | 1978 MethodElementImpl methodElement = |
| 1993 AnalysisContext context = createAnalysisContext(); | 1979 new MethodElementImpl.forNode(AstFactory.identifier3("m")); |
| 1994 HtmlElementImpl elementA = ElementFactory.htmlUnit(context, "indexA.html"); | 1980 enclosingClass.methods = <MethodElement>[methodElement]; |
| 1995 HtmlElementImpl elementB = ElementFactory.htmlUnit(context, "indexB.html"); | 1981 FunctionTypeImpl type = new FunctionTypeImpl(methodElement); |
| 1996 expect(elementA == elementB, isFalse); | 1982 DartType expectedType = enclosingClass.typeParameters[0].type; |
| 1997 } | 1983 List<DartType> arguments = type.typeArguments; |
| 1998 | 1984 expect(arguments, hasLength(1)); |
| 1999 void test_equals_null() { | 1985 expect(arguments[0], expectedType); |
| 2000 AnalysisContext context = createAnalysisContext(); | |
| 2001 HtmlElementImpl element = ElementFactory.htmlUnit(context, "index.html"); | |
| 2002 expect(element == null, isFalse); | |
| 2003 } | |
| 2004 | |
| 2005 void test_equals_sameSource() { | |
| 2006 AnalysisContext context = createAnalysisContext(); | |
| 2007 HtmlElementImpl elementA = ElementFactory.htmlUnit(context, "index.html"); | |
| 2008 HtmlElementImpl elementB = ElementFactory.htmlUnit(context, "index.html"); | |
| 2009 expect(elementA == elementB, isTrue); | |
| 2010 } | |
| 2011 | |
| 2012 void test_equals_self() { | |
| 2013 AnalysisContext context = createAnalysisContext(); | |
| 2014 HtmlElementImpl element = ElementFactory.htmlUnit(context, "index.html"); | |
| 2015 expect(element == element, isTrue); | |
| 2016 } | 1986 } |
| 2017 } | 1987 } |
| 2018 | 1988 |
| 2019 @reflectiveTest | 1989 @reflectiveTest |
| 2020 class InterfaceTypeImplTest extends EngineTestCase { | 1990 class InterfaceTypeImplTest extends EngineTestCase { |
| 2021 /** | 1991 /** |
| 2022 * The type provider used to access the types. | 1992 * The type provider used to access the types. |
| 2023 */ | 1993 */ |
| 2024 TestTypeProvider _typeProvider; | 1994 TestTypeProvider _typeProvider; |
| 2025 | 1995 |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2487 InterfaceType typeI = ElementFactory.classElement2("I").type; | 2457 InterfaceType typeI = ElementFactory.classElement2("I").type; |
| 2488 InterfaceTypeImpl typeBI = new InterfaceTypeImpl(classB); | 2458 InterfaceTypeImpl typeBI = new InterfaceTypeImpl(classB); |
| 2489 typeBI.typeArguments = <DartType>[typeI]; | 2459 typeBI.typeArguments = <DartType>[typeI]; |
| 2490 List<InterfaceType> interfaces = typeBI.interfaces; | 2460 List<InterfaceType> interfaces = typeBI.interfaces; |
| 2491 expect(interfaces, hasLength(1)); | 2461 expect(interfaces, hasLength(1)); |
| 2492 InterfaceType result = interfaces[0]; | 2462 InterfaceType result = interfaces[0]; |
| 2493 expect(result.element, same(classA)); | 2463 expect(result.element, same(classA)); |
| 2494 expect(result.typeArguments[0], same(typeI)); | 2464 expect(result.typeArguments[0], same(typeI)); |
| 2495 } | 2465 } |
| 2496 | 2466 |
| 2497 void test_getLeastUpperBound_directInterfaceCase() { | |
| 2498 // | |
| 2499 // class A | |
| 2500 // class B implements A | |
| 2501 // class C implements B | |
| 2502 // | |
| 2503 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2504 ClassElementImpl classB = ElementFactory.classElement2("B"); | |
| 2505 ClassElementImpl classC = ElementFactory.classElement2("C"); | |
| 2506 InterfaceType typeA = classA.type; | |
| 2507 InterfaceType typeB = classB.type; | |
| 2508 InterfaceType typeC = classC.type; | |
| 2509 classB.interfaces = <InterfaceType>[typeA]; | |
| 2510 classC.interfaces = <InterfaceType>[typeB]; | |
| 2511 expect(typeB.getLeastUpperBound(typeC), typeB); | |
| 2512 expect(typeC.getLeastUpperBound(typeB), typeB); | |
| 2513 } | |
| 2514 | |
| 2515 void test_getLeastUpperBound_directSubclassCase() { | |
| 2516 // | |
| 2517 // class A | |
| 2518 // class B extends A | |
| 2519 // class C extends B | |
| 2520 // | |
| 2521 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2522 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | |
| 2523 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | |
| 2524 InterfaceType typeB = classB.type; | |
| 2525 InterfaceType typeC = classC.type; | |
| 2526 expect(typeB.getLeastUpperBound(typeC), typeB); | |
| 2527 expect(typeC.getLeastUpperBound(typeB), typeB); | |
| 2528 } | |
| 2529 | |
| 2530 void test_getLeastUpperBound_functionType() { | |
| 2531 DartType interfaceType = ElementFactory.classElement2("A").type; | |
| 2532 FunctionTypeImpl functionType = new FunctionTypeImpl( | |
| 2533 new FunctionElementImpl.forNode(AstFactory.identifier3("f"))); | |
| 2534 expect(interfaceType.getLeastUpperBound(functionType), isNull); | |
| 2535 } | |
| 2536 | |
| 2537 void test_getLeastUpperBound_mixinCase() { | |
| 2538 // | |
| 2539 // class A | |
| 2540 // class B extends A | |
| 2541 // class C extends A | |
| 2542 // class D extends B with M, N, O, P | |
| 2543 // | |
| 2544 ClassElement classA = ElementFactory.classElement2("A"); | |
| 2545 ClassElement classB = ElementFactory.classElement("B", classA.type); | |
| 2546 ClassElement classC = ElementFactory.classElement("C", classA.type); | |
| 2547 ClassElementImpl classD = ElementFactory.classElement("D", classB.type); | |
| 2548 InterfaceType typeA = classA.type; | |
| 2549 InterfaceType typeC = classC.type; | |
| 2550 InterfaceType typeD = classD.type; | |
| 2551 classD.mixins = <InterfaceType>[ | |
| 2552 ElementFactory.classElement2("M").type, | |
| 2553 ElementFactory.classElement2("N").type, | |
| 2554 ElementFactory.classElement2("O").type, | |
| 2555 ElementFactory.classElement2("P").type | |
| 2556 ]; | |
| 2557 expect(typeD.getLeastUpperBound(typeC), typeA); | |
| 2558 expect(typeC.getLeastUpperBound(typeD), typeA); | |
| 2559 } | |
| 2560 | |
| 2561 void test_getLeastUpperBound_null() { | |
| 2562 DartType interfaceType = ElementFactory.classElement2("A").type; | |
| 2563 expect(interfaceType.getLeastUpperBound(null), isNull); | |
| 2564 } | |
| 2565 | |
| 2566 void test_getLeastUpperBound_object() { | |
| 2567 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2568 ClassElementImpl classB = ElementFactory.classElement2("B"); | |
| 2569 InterfaceType typeA = classA.type; | |
| 2570 InterfaceType typeB = classB.type; | |
| 2571 DartType typeObject = typeA.element.supertype; | |
| 2572 // assert that object does not have a super type | |
| 2573 expect((typeObject.element as ClassElement).supertype, isNull); | |
| 2574 // assert that both A and B have the same super type of Object | |
| 2575 expect(typeB.element.supertype, typeObject); | |
| 2576 // finally, assert that the only least upper bound of A and B is Object | |
| 2577 expect(typeA.getLeastUpperBound(typeB), typeObject); | |
| 2578 } | |
| 2579 | |
| 2580 void test_getLeastUpperBound_self() { | |
| 2581 ClassElement classA = ElementFactory.classElement2("A"); | |
| 2582 InterfaceType typeA = classA.type; | |
| 2583 expect(typeA.getLeastUpperBound(typeA), typeA); | |
| 2584 } | |
| 2585 | |
| 2586 void test_getLeastUpperBound_sharedSuperclass1() { | |
| 2587 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2588 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | |
| 2589 ClassElementImpl classC = ElementFactory.classElement("C", classA.type); | |
| 2590 InterfaceType typeA = classA.type; | |
| 2591 InterfaceType typeB = classB.type; | |
| 2592 InterfaceType typeC = classC.type; | |
| 2593 expect(typeB.getLeastUpperBound(typeC), typeA); | |
| 2594 expect(typeC.getLeastUpperBound(typeB), typeA); | |
| 2595 } | |
| 2596 | |
| 2597 void test_getLeastUpperBound_sharedSuperclass2() { | |
| 2598 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2599 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | |
| 2600 ClassElementImpl classC = ElementFactory.classElement("C", classA.type); | |
| 2601 ClassElementImpl classD = ElementFactory.classElement("D", classC.type); | |
| 2602 InterfaceType typeA = classA.type; | |
| 2603 InterfaceType typeB = classB.type; | |
| 2604 InterfaceType typeD = classD.type; | |
| 2605 expect(typeB.getLeastUpperBound(typeD), typeA); | |
| 2606 expect(typeD.getLeastUpperBound(typeB), typeA); | |
| 2607 } | |
| 2608 | |
| 2609 void test_getLeastUpperBound_sharedSuperclass3() { | |
| 2610 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2611 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | |
| 2612 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | |
| 2613 ClassElementImpl classD = ElementFactory.classElement("D", classB.type); | |
| 2614 InterfaceType typeB = classB.type; | |
| 2615 InterfaceType typeC = classC.type; | |
| 2616 InterfaceType typeD = classD.type; | |
| 2617 expect(typeC.getLeastUpperBound(typeD), typeB); | |
| 2618 expect(typeD.getLeastUpperBound(typeC), typeB); | |
| 2619 } | |
| 2620 | |
| 2621 void test_getLeastUpperBound_sharedSuperclass4() { | |
| 2622 ClassElement classA = ElementFactory.classElement2("A"); | |
| 2623 ClassElement classA2 = ElementFactory.classElement2("A2"); | |
| 2624 ClassElement classA3 = ElementFactory.classElement2("A3"); | |
| 2625 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | |
| 2626 ClassElementImpl classC = ElementFactory.classElement("C", classA.type); | |
| 2627 InterfaceType typeA = classA.type; | |
| 2628 InterfaceType typeA2 = classA2.type; | |
| 2629 InterfaceType typeA3 = classA3.type; | |
| 2630 InterfaceType typeB = classB.type; | |
| 2631 InterfaceType typeC = classC.type; | |
| 2632 classB.interfaces = <InterfaceType>[typeA2]; | |
| 2633 classC.interfaces = <InterfaceType>[typeA3]; | |
| 2634 expect(typeB.getLeastUpperBound(typeC), typeA); | |
| 2635 expect(typeC.getLeastUpperBound(typeB), typeA); | |
| 2636 } | |
| 2637 | |
| 2638 void test_getLeastUpperBound_sharedSuperinterface1() { | |
| 2639 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2640 ClassElementImpl classB = ElementFactory.classElement2("B"); | |
| 2641 ClassElementImpl classC = ElementFactory.classElement2("C"); | |
| 2642 InterfaceType typeA = classA.type; | |
| 2643 InterfaceType typeB = classB.type; | |
| 2644 InterfaceType typeC = classC.type; | |
| 2645 classB.interfaces = <InterfaceType>[typeA]; | |
| 2646 classC.interfaces = <InterfaceType>[typeA]; | |
| 2647 expect(typeB.getLeastUpperBound(typeC), typeA); | |
| 2648 expect(typeC.getLeastUpperBound(typeB), typeA); | |
| 2649 } | |
| 2650 | |
| 2651 void test_getLeastUpperBound_sharedSuperinterface2() { | |
| 2652 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2653 ClassElementImpl classB = ElementFactory.classElement2("B"); | |
| 2654 ClassElementImpl classC = ElementFactory.classElement2("C"); | |
| 2655 ClassElementImpl classD = ElementFactory.classElement2("D"); | |
| 2656 InterfaceType typeA = classA.type; | |
| 2657 InterfaceType typeB = classB.type; | |
| 2658 InterfaceType typeC = classC.type; | |
| 2659 InterfaceType typeD = classD.type; | |
| 2660 classB.interfaces = <InterfaceType>[typeA]; | |
| 2661 classC.interfaces = <InterfaceType>[typeA]; | |
| 2662 classD.interfaces = <InterfaceType>[typeC]; | |
| 2663 expect(typeB.getLeastUpperBound(typeD), typeA); | |
| 2664 expect(typeD.getLeastUpperBound(typeB), typeA); | |
| 2665 } | |
| 2666 | |
| 2667 void test_getLeastUpperBound_sharedSuperinterface3() { | |
| 2668 ClassElementImpl classA = ElementFactory.classElement2("A"); | |
| 2669 ClassElementImpl classB = ElementFactory.classElement2("B"); | |
| 2670 ClassElementImpl classC = ElementFactory.classElement2("C"); | |
| 2671 ClassElementImpl classD = ElementFactory.classElement2("D"); | |
| 2672 InterfaceType typeA = classA.type; | |
| 2673 InterfaceType typeB = classB.type; | |
| 2674 InterfaceType typeC = classC.type; | |
| 2675 InterfaceType typeD = classD.type; | |
| 2676 classB.interfaces = <InterfaceType>[typeA]; | |
| 2677 classC.interfaces = <InterfaceType>[typeB]; | |
| 2678 classD.interfaces = <InterfaceType>[typeB]; | |
| 2679 expect(typeC.getLeastUpperBound(typeD), typeB); | |
| 2680 expect(typeD.getLeastUpperBound(typeC), typeB); | |
| 2681 } | |
| 2682 | |
| 2683 void test_getLeastUpperBound_sharedSuperinterface4() { | |
| 2684 ClassElement classA = ElementFactory.classElement2("A"); | |
| 2685 ClassElement classA2 = ElementFactory.classElement2("A2"); | |
| 2686 ClassElement classA3 = ElementFactory.classElement2("A3"); | |
| 2687 ClassElementImpl classB = ElementFactory.classElement2("B"); | |
| 2688 ClassElementImpl classC = ElementFactory.classElement2("C"); | |
| 2689 InterfaceType typeA = classA.type; | |
| 2690 InterfaceType typeA2 = classA2.type; | |
| 2691 InterfaceType typeA3 = classA3.type; | |
| 2692 InterfaceType typeB = classB.type; | |
| 2693 InterfaceType typeC = classC.type; | |
| 2694 classB.interfaces = <InterfaceType>[typeA, typeA2]; | |
| 2695 classC.interfaces = <InterfaceType>[typeA, typeA3]; | |
| 2696 expect(typeB.getLeastUpperBound(typeC), typeA); | |
| 2697 expect(typeC.getLeastUpperBound(typeB), typeA); | |
| 2698 } | |
| 2699 | |
| 2700 void test_getLeastUpperBound_twoComparables() { | |
| 2701 InterfaceType string = _typeProvider.stringType; | |
| 2702 InterfaceType num = _typeProvider.numType; | |
| 2703 expect(string.getLeastUpperBound(num), _typeProvider.objectType); | |
| 2704 } | |
| 2705 | |
| 2706 void test_getLeastUpperBound_typeParameters_different() { | |
| 2707 // | |
| 2708 // class List<int> | |
| 2709 // class List<double> | |
| 2710 // | |
| 2711 InterfaceType listType = _typeProvider.listType; | |
| 2712 InterfaceType intType = _typeProvider.intType; | |
| 2713 InterfaceType doubleType = _typeProvider.doubleType; | |
| 2714 InterfaceType listOfIntType = listType.substitute4(<DartType>[intType]); | |
| 2715 InterfaceType listOfDoubleType = | |
| 2716 listType.substitute4(<DartType>[doubleType]); | |
| 2717 expect(listOfIntType.getLeastUpperBound(listOfDoubleType), | |
| 2718 _typeProvider.objectType); | |
| 2719 } | |
| 2720 | |
| 2721 void test_getLeastUpperBound_typeParameters_same() { | |
| 2722 // | |
| 2723 // List<int> | |
| 2724 // List<int> | |
| 2725 // | |
| 2726 InterfaceType listType = _typeProvider.listType; | |
| 2727 InterfaceType intType = _typeProvider.intType; | |
| 2728 InterfaceType listOfIntType = listType.substitute4(<DartType>[intType]); | |
| 2729 expect(listOfIntType.getLeastUpperBound(listOfIntType), listOfIntType); | |
| 2730 } | |
| 2731 | |
| 2732 void test_getMethod_implemented() { | 2467 void test_getMethod_implemented() { |
| 2733 // | 2468 // |
| 2734 // class A { m() {} } | 2469 // class A { m() {} } |
| 2735 // | 2470 // |
| 2736 ClassElementImpl classA = ElementFactory.classElement2("A"); | 2471 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 2737 String methodName = "m"; | 2472 String methodName = "m"; |
| 2738 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null); | 2473 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null); |
| 2739 classA.methods = <MethodElement>[methodM]; | 2474 classA.methods = <MethodElement>[methodM]; |
| 2740 InterfaceType typeA = classA.type; | 2475 InterfaceType typeA = classA.type; |
| 2741 expect(typeA.getMethod(methodName), same(methodM)); | 2476 expect(typeA.getMethod(methodName), same(methodM)); |
| (...skipping 1529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4271 } | 4006 } |
| 4272 | 4007 |
| 4273 class _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction | 4008 class _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction |
| 4274 extends InterfaceTypeImpl { | 4009 extends InterfaceTypeImpl { |
| 4275 _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction(ClassElement arg0) | 4010 _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction(ClassElement arg0) |
| 4276 : super(arg0); | 4011 : super(arg0); |
| 4277 | 4012 |
| 4278 @override | 4013 @override |
| 4279 bool get isDartCoreFunction => true; | 4014 bool get isDartCoreFunction => true; |
| 4280 } | 4015 } |
| OLD | NEW |