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.error_verifier; | 5 library engine.resolver.error_verifier; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 import "dart:math" as math; | 8 import "dart:math" as math; |
9 | 9 |
10 import 'java_engine.dart'; | 10 import 'java_engine.dart'; |
(...skipping 3976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3987 return false; | 3987 return false; |
3988 } | 3988 } |
3989 ClassElement superElement = superType.element; | 3989 ClassElement superElement = superType.element; |
3990 // try to find default generative super constructor | 3990 // try to find default generative super constructor |
3991 ConstructorElement superUnnamedConstructor = superElement.unnamedConstructor
; | 3991 ConstructorElement superUnnamedConstructor = superElement.unnamedConstructor
; |
3992 if (superUnnamedConstructor != null) { | 3992 if (superUnnamedConstructor != null) { |
3993 if (superUnnamedConstructor.isFactory) { | 3993 if (superUnnamedConstructor.isFactory) { |
3994 _errorReporter.reportErrorForNode(CompileTimeErrorCode.NON_GENERATIVE_CO
NSTRUCTOR, node.name, [superUnnamedConstructor]); | 3994 _errorReporter.reportErrorForNode(CompileTimeErrorCode.NON_GENERATIVE_CO
NSTRUCTOR, node.name, [superUnnamedConstructor]); |
3995 return true; | 3995 return true; |
3996 } | 3996 } |
3997 if (superUnnamedConstructor.isDefaultConstructor) { | 3997 if (superUnnamedConstructor.isDefaultConstructor && |
| 3998 _enclosingClass.isSuperConstructorAccessible( |
| 3999 superUnnamedConstructor)) { |
3998 return true; | 4000 return true; |
3999 } | 4001 } |
4000 } | 4002 } |
4001 // report problem | 4003 // report problem |
4002 _errorReporter.reportErrorForNode(CompileTimeErrorCode.NO_DEFAULT_SUPER_CONS
TRUCTOR_IMPLICIT, node.name, [superType.displayName]); | 4004 _errorReporter.reportErrorForNode(CompileTimeErrorCode.NO_DEFAULT_SUPER_CONS
TRUCTOR_IMPLICIT, node.name, [superType.displayName]); |
4003 return true; | 4005 return true; |
4004 } | 4006 } |
4005 | 4007 |
4006 /** | 4008 /** |
4007 * This checks that passed class declaration overrides all members required by
its superclasses | 4009 * This checks that passed class declaration overrides all members required by
its superclasses |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4838 if (superType == null) { | 4840 if (superType == null) { |
4839 return false; | 4841 return false; |
4840 } | 4842 } |
4841 ClassElement superElement = superType.element; | 4843 ClassElement superElement = superType.element; |
4842 ConstructorElement superUnnamedConstructor = superElement.unnamedConstructor
; | 4844 ConstructorElement superUnnamedConstructor = superElement.unnamedConstructor
; |
4843 if (superUnnamedConstructor != null) { | 4845 if (superUnnamedConstructor != null) { |
4844 if (superUnnamedConstructor.isFactory) { | 4846 if (superUnnamedConstructor.isFactory) { |
4845 _errorReporter.reportErrorForNode(CompileTimeErrorCode.NON_GENERATIVE_CO
NSTRUCTOR, node.returnType, [superUnnamedConstructor]); | 4847 _errorReporter.reportErrorForNode(CompileTimeErrorCode.NON_GENERATIVE_CO
NSTRUCTOR, node.returnType, [superUnnamedConstructor]); |
4846 return true; | 4848 return true; |
4847 } | 4849 } |
4848 if (!superUnnamedConstructor.isDefaultConstructor) { | 4850 if (!superUnnamedConstructor.isDefaultConstructor || |
| 4851 !_enclosingClass.isSuperConstructorAccessible( |
| 4852 superUnnamedConstructor)) { |
4849 int offset; | 4853 int offset; |
4850 int length; | 4854 int length; |
4851 { | 4855 { |
4852 Identifier returnType = node.returnType; | 4856 Identifier returnType = node.returnType; |
4853 SimpleIdentifier name = node.name; | 4857 SimpleIdentifier name = node.name; |
4854 offset = returnType.offset; | 4858 offset = returnType.offset; |
4855 length = (name != null ? name.end : returnType.end) - offset; | 4859 length = (name != null ? name.end : returnType.end) - offset; |
4856 } | 4860 } |
4857 _errorReporter.reportErrorForOffset(CompileTimeErrorCode.NO_DEFAULT_SUPE
R_CONSTRUCTOR_EXPLICIT, offset, length, [superType.displayName]); | 4861 _errorReporter.reportErrorForOffset(CompileTimeErrorCode.NO_DEFAULT_SUPE
R_CONSTRUCTOR_EXPLICIT, offset, length, [superType.displayName]); |
4858 } | 4862 } |
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5467 toCheck.add(type.element); | 5471 toCheck.add(type.element); |
5468 // type arguments | 5472 // type arguments |
5469 if (type is InterfaceType) { | 5473 if (type is InterfaceType) { |
5470 InterfaceType interfaceType = type; | 5474 InterfaceType interfaceType = type; |
5471 for (DartType typeArgument in interfaceType.typeArguments) { | 5475 for (DartType typeArgument in interfaceType.typeArguments) { |
5472 _addTypeToCheck(typeArgument); | 5476 _addTypeToCheck(typeArgument); |
5473 } | 5477 } |
5474 } | 5478 } |
5475 } | 5479 } |
5476 } | 5480 } |
OLD | NEW |