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

Side by Side Diff: pkg/analyzer/lib/src/generated/element_resolver.dart

Issue 2360303003: Issue 27392. Fix for invoking objects with function-bounds type parameter types. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/non_error_resolver_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 analyzer.src.generated.element_resolver; 5 library analyzer.src.generated.element_resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/syntactic_entity.dart'; 10 import 'package:analyzer/dart/ast/syntactic_entity.dart';
(...skipping 1601 matching lines...) Expand 10 before | Expand all | Expand 10 after
1612 } 1612 }
1613 } 1613 }
1614 return false; 1614 return false;
1615 } 1615 }
1616 1616
1617 /** 1617 /**
1618 * Return `true` if the given [type] represents an object that could be 1618 * Return `true` if the given [type] represents an object that could be
1619 * invoked using the call operator '()'. 1619 * invoked using the call operator '()'.
1620 */ 1620 */
1621 bool _isExecutableType(DartType type) { 1621 bool _isExecutableType(DartType type) {
1622 type = type?.resolveToBound(_resolver.typeProvider.objectType);
1622 if (type.isDynamic || type is FunctionType) { 1623 if (type.isDynamic || type is FunctionType) {
1623 return true; 1624 return true;
1624 } else if (!_enableStrictCallChecks && 1625 } else if (!_enableStrictCallChecks &&
1625 (type.isDartCoreFunction || type.isObject)) { 1626 (type.isDartCoreFunction || type.isObject)) {
1626 return true; 1627 return true;
1627 } else if (type is InterfaceType) { 1628 } else if (type is InterfaceType) {
1628 ClassElement classElement = type.element; 1629 ClassElement classElement = type.element;
1629 // 16078 from Gilad: If the type is a Functor with the @proxy annotation, 1630 // 16078 from Gilad: If the type is a Functor with the @proxy annotation,
1630 // treat it as an executable type. 1631 // treat it as an executable type.
1631 // example code: NonErrorResolverTest. 1632 // example code: NonErrorResolverTest.
(...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after
2637 2638
2638 @override 2639 @override
2639 Element get staticElement => null; 2640 Element get staticElement => null;
2640 2641
2641 @override 2642 @override
2642 dynamic/*=E*/ accept/*<E>*/(AstVisitor/*<E>*/ visitor) => null; 2643 dynamic/*=E*/ accept/*<E>*/(AstVisitor/*<E>*/ visitor) => null;
2643 2644
2644 @override 2645 @override
2645 void visitChildren(AstVisitor visitor) {} 2646 void visitChildren(AstVisitor visitor) {}
2646 } 2647 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/non_error_resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698