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

Side by Side Diff: pkg/analyzer/test/src/summary/summary_common.dart

Issue 1807213005: Use GLB for function parameters when doing LUB in strong mode. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix summary tests that are doing the right thing now. Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 analyzer.test.src.summary.summary_common; 5 library analyzer.test.src.summary.summary_common;
6 6
7 import 'package:analyzer/analyzer.dart'; 7 import 'package:analyzer/analyzer.dart';
8 import 'package:analyzer/dart/ast/ast.dart'; 8 import 'package:analyzer/dart/ast/ast.dart';
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/src/dart/scanner/reader.dart'; 10 import 'package:analyzer/src/dart/scanner/reader.dart';
(...skipping 6582 matching lines...) Expand 10 before | Expand all | Expand 10 after
6593 // strong mode. 6593 // strong mode.
6594 // TODO(paulberry): once proper generic method syntax supports generic 6594 // TODO(paulberry): once proper generic method syntax supports generic
6595 // closures, rewrite the test below without using generic comment syntax, 6595 // closures, rewrite the test below without using generic comment syntax,
6596 // and remove this hack. See dartbug.com/25819 6596 // and remove this hack. See dartbug.com/25819
6597 return; 6597 return;
6598 } 6598 }
6599 UnlinkedVariable variable = serializeVariableText(''' 6599 UnlinkedVariable variable = serializeVariableText('''
6600 final v = f() ? /*<T>*/(T t) => 0 : /*<T>*/(T t) => 1; 6600 final v = f() ? /*<T>*/(T t) => 0 : /*<T>*/(T t) => 1;
6601 bool f() => true; 6601 bool f() => true;
6602 '''); 6602 ''');
6603 // The inferred type of `v` is currently `(Object) -> int` due to
6604 // dartbug.com/25802. TODO(paulberry): fix this test when the bug is fixed.
6605 EntityRef inferredType = getTypeRefForSlot(variable.inferredTypeSlot); 6603 EntityRef inferredType = getTypeRefForSlot(variable.inferredTypeSlot);
6606 checkLinkedTypeRef( 6604 checkLinkedTypeRef(
6607 inferredType.syntheticReturnType, 'dart:core', 'dart:core', 'int'); 6605 inferredType.syntheticReturnType, 'dart:core', 'dart:core', 'int');
6608 expect(inferredType.syntheticParams, hasLength(1)); 6606 expect(inferredType.syntheticParams, hasLength(1));
6609 checkLinkedTypeRef(inferredType.syntheticParams[0].type, 'dart:core', 6607 checkLinkedTypeRef(
6610 'dart:core', 'Object'); 6608 inferredType.syntheticParams[0].type, null, null, '*bottom*');
6611 } 6609 }
6612 6610
6613 test_syntheticFunctionType_genericClosure_inGenericFunction() { 6611 test_syntheticFunctionType_genericClosure_inGenericFunction() {
6614 if (skipFullyLinkedData) { 6612 if (skipFullyLinkedData) {
6615 return; 6613 return;
6616 } 6614 }
6617 if (!strongMode) { 6615 if (!strongMode) {
6618 // The test below uses generic comment syntax because proper generic 6616 // The test below uses generic comment syntax because proper generic
6619 // method syntax doesn't support generic closures. So it can only run in 6617 // method syntax doesn't support generic closures. So it can only run in
6620 // strong mode. 6618 // strong mode.
6621 // TODO(paulberry): once proper generic method syntax supports generic 6619 // TODO(paulberry): once proper generic method syntax supports generic
6622 // closures, rewrite the test below without using generic comment syntax, 6620 // closures, rewrite the test below without using generic comment syntax,
6623 // and remove this hack. See dartbug.com/25819 6621 // and remove this hack. See dartbug.com/25819
6624 return; 6622 return;
6625 } 6623 }
6626 UnlinkedVariable variable = serializeExecutableText(''' 6624 UnlinkedVariable variable = serializeExecutableText('''
6627 void f<T, U>(bool b) { 6625 void f<T, U>(bool b) {
6628 final v = b ? /*<V>*/(T t, U u, V v) => 0 : /*<V>*/(T t, U u, V v) => 1; 6626 final v = b ? /*<V>*/(T t, U u, V v) => 0 : /*<V>*/(T t, U u, V v) => 1;
6629 } 6627 }
6630 ''').localVariables[0]; 6628 ''').localVariables[0];
6631 // The inferred type of `v` is currently `(T, U, Object) -> int` due to
6632 // dartbug.com/25802. TODO(paulberry): fix this test when the bug is fixed.
6633 EntityRef inferredType = getTypeRefForSlot(variable.inferredTypeSlot); 6629 EntityRef inferredType = getTypeRefForSlot(variable.inferredTypeSlot);
6634 checkLinkedTypeRef( 6630 checkLinkedTypeRef(
6635 inferredType.syntheticReturnType, 'dart:core', 'dart:core', 'int'); 6631 inferredType.syntheticReturnType, 'dart:core', 'dart:core', 'int');
6636 expect(inferredType.syntheticParams, hasLength(3)); 6632 expect(inferredType.syntheticParams, hasLength(3));
6637 checkParamTypeRef(inferredType.syntheticParams[0].type, 2); 6633 checkParamTypeRef(inferredType.syntheticParams[0].type, 2);
6638 checkParamTypeRef(inferredType.syntheticParams[1].type, 1); 6634 checkParamTypeRef(inferredType.syntheticParams[1].type, 1);
6639 checkLinkedTypeRef(inferredType.syntheticParams[2].type, 'dart:core', 6635 checkLinkedTypeRef(
6640 'dart:core', 'Object'); 6636 inferredType.syntheticParams[2].type, null, null, '*bottom*');
6641 } 6637 }
6642 6638
6643 test_syntheticFunctionType_inGenericClass() { 6639 test_syntheticFunctionType_inGenericClass() {
6644 if (skipFullyLinkedData) { 6640 if (skipFullyLinkedData) {
6645 return; 6641 return;
6646 } 6642 }
6647 UnlinkedVariable variable = serializeClassText(''' 6643 UnlinkedVariable variable = serializeClassText('''
6648 class C<T, U> { 6644 class C<T, U> {
6649 var v = f() ? (T t, U u) => 0 : (T t, U u) => 1; 6645 var v = f() ? (T t, U u) => 0 : (T t, U u) => 1;
6650 } 6646 }
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
7531 class _PrefixExpectation { 7527 class _PrefixExpectation {
7532 final ReferenceKind kind; 7528 final ReferenceKind kind;
7533 final String name; 7529 final String name;
7534 final String absoluteUri; 7530 final String absoluteUri;
7535 final String relativeUri; 7531 final String relativeUri;
7536 final int numTypeParameters; 7532 final int numTypeParameters;
7537 7533
7538 _PrefixExpectation(this.kind, this.name, 7534 _PrefixExpectation(this.kind, this.name,
7539 {this.absoluteUri, this.relativeUri, this.numTypeParameters: 0}); 7535 {this.absoluteUri, this.relativeUri, this.numTypeParameters: 0});
7540 } 7536 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/type_system_test.dart ('k') | pkg/analyzer/test/src/task/strong/checker_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698