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.resolver.element_resolver; | 5 library engine.resolver.element_resolver; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 | 8 |
9 import 'ast.dart'; | 9 import 'ast.dart'; |
10 import 'element.dart'; | 10 import 'element.dart'; |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 } | 584 } |
585 Element staticElement; | 585 Element staticElement; |
586 Element propagatedElement; | 586 Element propagatedElement; |
587 DartType staticType = null; | 587 DartType staticType = null; |
588 DartType propagatedType = null; | 588 DartType propagatedType = null; |
589 if (target == null) { | 589 if (target == null) { |
590 staticElement = _resolveInvokedElement(methodName); | 590 staticElement = _resolveInvokedElement(methodName); |
591 propagatedElement = null; | 591 propagatedElement = null; |
592 } else if (methodName.name == FunctionElement.LOAD_LIBRARY_NAME && | 592 } else if (methodName.name == FunctionElement.LOAD_LIBRARY_NAME && |
593 _isDeferredPrefix(target)) { | 593 _isDeferredPrefix(target)) { |
| 594 if (node.operator.type == sc.TokenType.QUESTION_PERIOD) { |
| 595 _resolver.reportErrorForNode( |
| 596 CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT, target, |
| 597 [(target as SimpleIdentifier).name]); |
| 598 } |
594 LibraryElement importedLibrary = _getImportedLibrary(target); | 599 LibraryElement importedLibrary = _getImportedLibrary(target); |
595 methodName.staticElement = importedLibrary.loadLibraryFunction; | 600 methodName.staticElement = importedLibrary.loadLibraryFunction; |
596 return null; | 601 return null; |
597 } else { | 602 } else { |
598 staticType = _getStaticType(target); | 603 staticType = _getStaticType(target); |
599 propagatedType = _getPropagatedType(target); | 604 propagatedType = _getPropagatedType(target); |
600 // | 605 // |
601 // If this method invocation is of the form 'C.m' where 'C' is a class, | 606 // If this method invocation is of the form 'C.m' where 'C' is a class, |
602 // then we don't call resolveInvokedElement(...) which walks up the class | 607 // then we don't call resolveInvokedElement(...) which walks up the class |
603 // hierarchy, instead we just look for the member in the type only. This | 608 // hierarchy, instead we just look for the member in the type only. This |
(...skipping 2202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2806 | 2811 |
2807 @override | 2812 @override |
2808 Element get staticElement => null; | 2813 Element get staticElement => null; |
2809 | 2814 |
2810 @override | 2815 @override |
2811 accept(AstVisitor visitor) => null; | 2816 accept(AstVisitor visitor) => null; |
2812 | 2817 |
2813 @override | 2818 @override |
2814 void visitChildren(AstVisitor visitor) {} | 2819 void visitChildren(AstVisitor visitor) {} |
2815 } | 2820 } |
OLD | NEW |