| 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 analyzer.src.generated.resolver; | 5 library analyzer.src.generated.resolver; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
| 10 import 'package:analyzer/dart/element/type.dart'; | 10 import 'package:analyzer/dart/element/type.dart'; |
| (...skipping 2678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2689 _currentHolder = previousHolder; | 2689 _currentHolder = previousHolder; |
| 2690 } | 2690 } |
| 2691 SimpleIdentifier className = node.name; | 2691 SimpleIdentifier className = node.name; |
| 2692 ClassElementImpl element = new ClassElementImpl.forNode(className); | 2692 ClassElementImpl element = new ClassElementImpl.forNode(className); |
| 2693 List<TypeParameterElement> typeParameters = holder.typeParameters; | 2693 List<TypeParameterElement> typeParameters = holder.typeParameters; |
| 2694 List<DartType> typeArguments = _createTypeParameterTypes(typeParameters); | 2694 List<DartType> typeArguments = _createTypeParameterTypes(typeParameters); |
| 2695 InterfaceTypeImpl interfaceType = new InterfaceTypeImpl(element); | 2695 InterfaceTypeImpl interfaceType = new InterfaceTypeImpl(element); |
| 2696 interfaceType.typeArguments = typeArguments; | 2696 interfaceType.typeArguments = typeArguments; |
| 2697 element.type = interfaceType; | 2697 element.type = interfaceType; |
| 2698 element.typeParameters = typeParameters; | 2698 element.typeParameters = typeParameters; |
| 2699 _setDocRange(element, node); | 2699 _setDoc(element, node); |
| 2700 element.abstract = node.isAbstract; | 2700 element.abstract = node.isAbstract; |
| 2701 element.accessors = holder.accessors; | 2701 element.accessors = holder.accessors; |
| 2702 List<ConstructorElement> constructors = holder.constructors; | 2702 List<ConstructorElement> constructors = holder.constructors; |
| 2703 if (constructors.isEmpty) { | 2703 if (constructors.isEmpty) { |
| 2704 constructors = _createDefaultConstructors(element); | 2704 constructors = _createDefaultConstructors(element); |
| 2705 } | 2705 } |
| 2706 element.constructors = constructors; | 2706 element.constructors = constructors; |
| 2707 element.fields = holder.fields; | 2707 element.fields = holder.fields; |
| 2708 element.methods = holder.methods; | 2708 element.methods = holder.methods; |
| 2709 element.validMixin = _isValidMixin; | 2709 element.validMixin = _isValidMixin; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2761 _inFunction = true; | 2761 _inFunction = true; |
| 2762 try { | 2762 try { |
| 2763 _visitChildren(holder, node); | 2763 _visitChildren(holder, node); |
| 2764 } finally { | 2764 } finally { |
| 2765 _inFunction = wasInFunction; | 2765 _inFunction = wasInFunction; |
| 2766 } | 2766 } |
| 2767 FunctionBody body = node.body; | 2767 FunctionBody body = node.body; |
| 2768 SimpleIdentifier constructorName = node.name; | 2768 SimpleIdentifier constructorName = node.name; |
| 2769 ConstructorElementImpl element = | 2769 ConstructorElementImpl element = |
| 2770 new ConstructorElementImpl.forNode(constructorName); | 2770 new ConstructorElementImpl.forNode(constructorName); |
| 2771 _setDocRange(element, node); | 2771 _setDoc(element, node); |
| 2772 if (node.externalKeyword != null) { | 2772 if (node.externalKeyword != null) { |
| 2773 element.external = true; | 2773 element.external = true; |
| 2774 } | 2774 } |
| 2775 if (node.factoryKeyword != null) { | 2775 if (node.factoryKeyword != null) { |
| 2776 element.factory = true; | 2776 element.factory = true; |
| 2777 } | 2777 } |
| 2778 element.functions = holder.functions; | 2778 element.functions = holder.functions; |
| 2779 element.labels = holder.labels; | 2779 element.labels = holder.labels; |
| 2780 element.localVariables = holder.localVariables; | 2780 element.localVariables = holder.localVariables; |
| 2781 element.parameters = holder.parameters; | 2781 element.parameters = holder.parameters; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2866 normalParameter.accept(this); | 2866 normalParameter.accept(this); |
| 2867 holder.validate(); | 2867 holder.validate(); |
| 2868 return null; | 2868 return null; |
| 2869 } | 2869 } |
| 2870 | 2870 |
| 2871 @override | 2871 @override |
| 2872 Object visitEnumDeclaration(EnumDeclaration node) { | 2872 Object visitEnumDeclaration(EnumDeclaration node) { |
| 2873 SimpleIdentifier enumName = node.name; | 2873 SimpleIdentifier enumName = node.name; |
| 2874 ClassElementImpl enumElement = new ClassElementImpl.forNode(enumName); | 2874 ClassElementImpl enumElement = new ClassElementImpl.forNode(enumName); |
| 2875 enumElement.enum2 = true; | 2875 enumElement.enum2 = true; |
| 2876 _setDocRange(enumElement, node); | 2876 _setDoc(enumElement, node); |
| 2877 InterfaceTypeImpl enumType = new InterfaceTypeImpl(enumElement); | 2877 InterfaceTypeImpl enumType = new InterfaceTypeImpl(enumElement); |
| 2878 enumElement.type = enumType; | 2878 enumElement.type = enumType; |
| 2879 // The equivalent code for enums in the spec shows a single constructor, | 2879 // The equivalent code for enums in the spec shows a single constructor, |
| 2880 // but that constructor is not callable (since it is a compile-time error | 2880 // but that constructor is not callable (since it is a compile-time error |
| 2881 // to subclass, mix-in, implement, or explicitly instantiate an enum). So | 2881 // to subclass, mix-in, implement, or explicitly instantiate an enum). So |
| 2882 // we represent this as having no constructors. | 2882 // we represent this as having no constructors. |
| 2883 enumElement.constructors = ConstructorElement.EMPTY_LIST; | 2883 enumElement.constructors = ConstructorElement.EMPTY_LIST; |
| 2884 _currentHolder.addEnum(enumElement); | 2884 _currentHolder.addEnum(enumElement); |
| 2885 enumName.staticElement = enumElement; | 2885 enumName.staticElement = enumElement; |
| 2886 return super.visitEnumDeclaration(node); | 2886 return super.visitEnumDeclaration(node); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2939 _visitChildren(holder, node); | 2939 _visitChildren(holder, node); |
| 2940 } finally { | 2940 } finally { |
| 2941 _inFunction = wasInFunction; | 2941 _inFunction = wasInFunction; |
| 2942 } | 2942 } |
| 2943 FunctionBody body = expression.body; | 2943 FunctionBody body = expression.body; |
| 2944 Token property = node.propertyKeyword; | 2944 Token property = node.propertyKeyword; |
| 2945 if (property == null || _inFunction) { | 2945 if (property == null || _inFunction) { |
| 2946 SimpleIdentifier functionName = node.name; | 2946 SimpleIdentifier functionName = node.name; |
| 2947 FunctionElementImpl element = | 2947 FunctionElementImpl element = |
| 2948 new FunctionElementImpl.forNode(functionName); | 2948 new FunctionElementImpl.forNode(functionName); |
| 2949 _setDocRange(element, node); | 2949 _setDoc(element, node); |
| 2950 if (node.externalKeyword != null) { | 2950 if (node.externalKeyword != null) { |
| 2951 element.external = true; | 2951 element.external = true; |
| 2952 } | 2952 } |
| 2953 element.functions = holder.functions; | 2953 element.functions = holder.functions; |
| 2954 element.labels = holder.labels; | 2954 element.labels = holder.labels; |
| 2955 element.localVariables = holder.localVariables; | 2955 element.localVariables = holder.localVariables; |
| 2956 element.parameters = holder.parameters; | 2956 element.parameters = holder.parameters; |
| 2957 element.typeParameters = holder.typeParameters; | 2957 element.typeParameters = holder.typeParameters; |
| 2958 if (body.isAsynchronous) { | 2958 if (body.isAsynchronous) { |
| 2959 element.asynchronous = true; | 2959 element.asynchronous = true; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2986 .getTopLevelVariable(propertyName) as TopLevelVariableElementImpl; | 2986 .getTopLevelVariable(propertyName) as TopLevelVariableElementImpl; |
| 2987 if (variable == null) { | 2987 if (variable == null) { |
| 2988 variable = new TopLevelVariableElementImpl(node.name.name, -1); | 2988 variable = new TopLevelVariableElementImpl(node.name.name, -1); |
| 2989 variable.final2 = true; | 2989 variable.final2 = true; |
| 2990 variable.synthetic = true; | 2990 variable.synthetic = true; |
| 2991 _currentHolder.addTopLevelVariable(variable); | 2991 _currentHolder.addTopLevelVariable(variable); |
| 2992 } | 2992 } |
| 2993 if (node.isGetter) { | 2993 if (node.isGetter) { |
| 2994 PropertyAccessorElementImpl getter = | 2994 PropertyAccessorElementImpl getter = |
| 2995 new PropertyAccessorElementImpl.forNode(propertyNameNode); | 2995 new PropertyAccessorElementImpl.forNode(propertyNameNode); |
| 2996 _setDocRange(getter, node); | 2996 _setDoc(getter, node); |
| 2997 if (node.externalKeyword != null) { | 2997 if (node.externalKeyword != null) { |
| 2998 getter.external = true; | 2998 getter.external = true; |
| 2999 } | 2999 } |
| 3000 getter.functions = holder.functions; | 3000 getter.functions = holder.functions; |
| 3001 getter.labels = holder.labels; | 3001 getter.labels = holder.labels; |
| 3002 getter.localVariables = holder.localVariables; | 3002 getter.localVariables = holder.localVariables; |
| 3003 if (body.isAsynchronous) { | 3003 if (body.isAsynchronous) { |
| 3004 getter.asynchronous = true; | 3004 getter.asynchronous = true; |
| 3005 } | 3005 } |
| 3006 if (body.isGenerator) { | 3006 if (body.isGenerator) { |
| 3007 getter.generator = true; | 3007 getter.generator = true; |
| 3008 } | 3008 } |
| 3009 getter.variable = variable; | 3009 getter.variable = variable; |
| 3010 getter.getter = true; | 3010 getter.getter = true; |
| 3011 getter.static = true; | 3011 getter.static = true; |
| 3012 variable.getter = getter; | 3012 variable.getter = getter; |
| 3013 if (node.returnType == null) { | 3013 if (node.returnType == null) { |
| 3014 getter.hasImplicitReturnType = true; | 3014 getter.hasImplicitReturnType = true; |
| 3015 } | 3015 } |
| 3016 _currentHolder.addAccessor(getter); | 3016 _currentHolder.addAccessor(getter); |
| 3017 expression.element = getter; | 3017 expression.element = getter; |
| 3018 propertyNameNode.staticElement = getter; | 3018 propertyNameNode.staticElement = getter; |
| 3019 } else { | 3019 } else { |
| 3020 PropertyAccessorElementImpl setter = | 3020 PropertyAccessorElementImpl setter = |
| 3021 new PropertyAccessorElementImpl.forNode(propertyNameNode); | 3021 new PropertyAccessorElementImpl.forNode(propertyNameNode); |
| 3022 _setDocRange(setter, node); | 3022 _setDoc(setter, node); |
| 3023 if (node.externalKeyword != null) { | 3023 if (node.externalKeyword != null) { |
| 3024 setter.external = true; | 3024 setter.external = true; |
| 3025 } | 3025 } |
| 3026 setter.functions = holder.functions; | 3026 setter.functions = holder.functions; |
| 3027 setter.labels = holder.labels; | 3027 setter.labels = holder.labels; |
| 3028 setter.localVariables = holder.localVariables; | 3028 setter.localVariables = holder.localVariables; |
| 3029 setter.parameters = holder.parameters; | 3029 setter.parameters = holder.parameters; |
| 3030 if (body.isAsynchronous) { | 3030 if (body.isAsynchronous) { |
| 3031 setter.asynchronous = true; | 3031 setter.asynchronous = true; |
| 3032 } | 3032 } |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3103 | 3103 |
| 3104 @override | 3104 @override |
| 3105 Object visitFunctionTypeAlias(FunctionTypeAlias node) { | 3105 Object visitFunctionTypeAlias(FunctionTypeAlias node) { |
| 3106 ElementHolder holder = new ElementHolder(); | 3106 ElementHolder holder = new ElementHolder(); |
| 3107 _visitChildren(holder, node); | 3107 _visitChildren(holder, node); |
| 3108 SimpleIdentifier aliasName = node.name; | 3108 SimpleIdentifier aliasName = node.name; |
| 3109 List<ParameterElement> parameters = holder.parameters; | 3109 List<ParameterElement> parameters = holder.parameters; |
| 3110 List<TypeParameterElement> typeParameters = holder.typeParameters; | 3110 List<TypeParameterElement> typeParameters = holder.typeParameters; |
| 3111 FunctionTypeAliasElementImpl element = | 3111 FunctionTypeAliasElementImpl element = |
| 3112 new FunctionTypeAliasElementImpl.forNode(aliasName); | 3112 new FunctionTypeAliasElementImpl.forNode(aliasName); |
| 3113 _setDocRange(element, node); | 3113 _setDoc(element, node); |
| 3114 element.parameters = parameters; | 3114 element.parameters = parameters; |
| 3115 element.typeParameters = typeParameters; | 3115 element.typeParameters = typeParameters; |
| 3116 _createTypeParameterTypes(typeParameters); | 3116 _createTypeParameterTypes(typeParameters); |
| 3117 element.type = new FunctionTypeImpl.forTypedef(element); | 3117 element.type = new FunctionTypeImpl.forTypedef(element); |
| 3118 _currentHolder.addTypeAlias(element); | 3118 _currentHolder.addTypeAlias(element); |
| 3119 aliasName.staticElement = element; | 3119 aliasName.staticElement = element; |
| 3120 holder.validate(); | 3120 holder.validate(); |
| 3121 return null; | 3121 return null; |
| 3122 } | 3122 } |
| 3123 | 3123 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3174 FunctionBody body = node.body; | 3174 FunctionBody body = node.body; |
| 3175 if (property == null) { | 3175 if (property == null) { |
| 3176 SimpleIdentifier methodName = node.name; | 3176 SimpleIdentifier methodName = node.name; |
| 3177 String nameOfMethod = methodName.name; | 3177 String nameOfMethod = methodName.name; |
| 3178 if (nameOfMethod == TokenType.MINUS.lexeme && | 3178 if (nameOfMethod == TokenType.MINUS.lexeme && |
| 3179 node.parameters.parameters.length == 0) { | 3179 node.parameters.parameters.length == 0) { |
| 3180 nameOfMethod = "unary-"; | 3180 nameOfMethod = "unary-"; |
| 3181 } | 3181 } |
| 3182 MethodElementImpl element = | 3182 MethodElementImpl element = |
| 3183 new MethodElementImpl(nameOfMethod, methodName.offset); | 3183 new MethodElementImpl(nameOfMethod, methodName.offset); |
| 3184 _setDocRange(element, node); | 3184 _setDoc(element, node); |
| 3185 element.abstract = node.isAbstract; | 3185 element.abstract = node.isAbstract; |
| 3186 if (node.externalKeyword != null) { | 3186 if (node.externalKeyword != null) { |
| 3187 element.external = true; | 3187 element.external = true; |
| 3188 } | 3188 } |
| 3189 element.functions = holder.functions; | 3189 element.functions = holder.functions; |
| 3190 element.labels = holder.labels; | 3190 element.labels = holder.labels; |
| 3191 element.localVariables = holder.localVariables; | 3191 element.localVariables = holder.localVariables; |
| 3192 element.parameters = holder.parameters; | 3192 element.parameters = holder.parameters; |
| 3193 element.static = isStatic; | 3193 element.static = isStatic; |
| 3194 element.typeParameters = holder.typeParameters; | 3194 element.typeParameters = holder.typeParameters; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 3211 if (field == null) { | 3211 if (field == null) { |
| 3212 field = new FieldElementImpl(node.name.name, -1); | 3212 field = new FieldElementImpl(node.name.name, -1); |
| 3213 field.final2 = true; | 3213 field.final2 = true; |
| 3214 field.static = isStatic; | 3214 field.static = isStatic; |
| 3215 field.synthetic = true; | 3215 field.synthetic = true; |
| 3216 _currentHolder.addField(field); | 3216 _currentHolder.addField(field); |
| 3217 } | 3217 } |
| 3218 if (node.isGetter) { | 3218 if (node.isGetter) { |
| 3219 PropertyAccessorElementImpl getter = | 3219 PropertyAccessorElementImpl getter = |
| 3220 new PropertyAccessorElementImpl.forNode(propertyNameNode); | 3220 new PropertyAccessorElementImpl.forNode(propertyNameNode); |
| 3221 _setDocRange(getter, node); | 3221 _setDoc(getter, node); |
| 3222 if (node.externalKeyword != null) { | 3222 if (node.externalKeyword != null) { |
| 3223 getter.external = true; | 3223 getter.external = true; |
| 3224 } | 3224 } |
| 3225 getter.functions = holder.functions; | 3225 getter.functions = holder.functions; |
| 3226 getter.labels = holder.labels; | 3226 getter.labels = holder.labels; |
| 3227 getter.localVariables = holder.localVariables; | 3227 getter.localVariables = holder.localVariables; |
| 3228 if (body.isAsynchronous) { | 3228 if (body.isAsynchronous) { |
| 3229 getter.asynchronous = true; | 3229 getter.asynchronous = true; |
| 3230 } | 3230 } |
| 3231 if (body.isGenerator) { | 3231 if (body.isGenerator) { |
| 3232 getter.generator = true; | 3232 getter.generator = true; |
| 3233 } | 3233 } |
| 3234 getter.variable = field; | 3234 getter.variable = field; |
| 3235 getter.abstract = node.isAbstract; | 3235 getter.abstract = node.isAbstract; |
| 3236 getter.getter = true; | 3236 getter.getter = true; |
| 3237 getter.static = isStatic; | 3237 getter.static = isStatic; |
| 3238 field.getter = getter; | 3238 field.getter = getter; |
| 3239 if (node.returnType == null) { | 3239 if (node.returnType == null) { |
| 3240 getter.hasImplicitReturnType = true; | 3240 getter.hasImplicitReturnType = true; |
| 3241 } | 3241 } |
| 3242 _currentHolder.addAccessor(getter); | 3242 _currentHolder.addAccessor(getter); |
| 3243 propertyNameNode.staticElement = getter; | 3243 propertyNameNode.staticElement = getter; |
| 3244 } else { | 3244 } else { |
| 3245 PropertyAccessorElementImpl setter = | 3245 PropertyAccessorElementImpl setter = |
| 3246 new PropertyAccessorElementImpl.forNode(propertyNameNode); | 3246 new PropertyAccessorElementImpl.forNode(propertyNameNode); |
| 3247 _setDocRange(setter, node); | 3247 _setDoc(setter, node); |
| 3248 if (node.externalKeyword != null) { | 3248 if (node.externalKeyword != null) { |
| 3249 setter.external = true; | 3249 setter.external = true; |
| 3250 } | 3250 } |
| 3251 setter.functions = holder.functions; | 3251 setter.functions = holder.functions; |
| 3252 setter.labels = holder.labels; | 3252 setter.labels = holder.labels; |
| 3253 setter.localVariables = holder.localVariables; | 3253 setter.localVariables = holder.localVariables; |
| 3254 setter.parameters = holder.parameters; | 3254 setter.parameters = holder.parameters; |
| 3255 if (body.isAsynchronous) { | 3255 if (body.isAsynchronous) { |
| 3256 setter.asynchronous = true; | 3256 setter.asynchronous = true; |
| 3257 } | 3257 } |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3375 if (_inFieldContext) { | 3375 if (_inFieldContext) { |
| 3376 SimpleIdentifier fieldName = node.name; | 3376 SimpleIdentifier fieldName = node.name; |
| 3377 FieldElementImpl field; | 3377 FieldElementImpl field; |
| 3378 if ((isConst || isFinal) && hasInitializer) { | 3378 if ((isConst || isFinal) && hasInitializer) { |
| 3379 field = new ConstFieldElementImpl.forNode(fieldName); | 3379 field = new ConstFieldElementImpl.forNode(fieldName); |
| 3380 } else { | 3380 } else { |
| 3381 field = new FieldElementImpl.forNode(fieldName); | 3381 field = new FieldElementImpl.forNode(fieldName); |
| 3382 } | 3382 } |
| 3383 element = field; | 3383 element = field; |
| 3384 if (node.parent.parent is FieldDeclaration) { | 3384 if (node.parent.parent is FieldDeclaration) { |
| 3385 _setDocRange(element, node.parent.parent); | 3385 _setDoc(element, node.parent.parent); |
| 3386 } | 3386 } |
| 3387 if ((node.parent as VariableDeclarationList).type == null) { | 3387 if ((node.parent as VariableDeclarationList).type == null) { |
| 3388 field.hasImplicitType = true; | 3388 field.hasImplicitType = true; |
| 3389 } | 3389 } |
| 3390 _currentHolder.addField(field); | 3390 _currentHolder.addField(field); |
| 3391 fieldName.staticElement = field; | 3391 fieldName.staticElement = field; |
| 3392 } else if (_inFunction) { | 3392 } else if (_inFunction) { |
| 3393 SimpleIdentifier variableName = node.name; | 3393 SimpleIdentifier variableName = node.name; |
| 3394 LocalVariableElementImpl variable; | 3394 LocalVariableElementImpl variable; |
| 3395 if (isConst && hasInitializer) { | 3395 if (isConst && hasInitializer) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 3410 } else { | 3410 } else { |
| 3411 SimpleIdentifier variableName = node.name; | 3411 SimpleIdentifier variableName = node.name; |
| 3412 TopLevelVariableElementImpl variable; | 3412 TopLevelVariableElementImpl variable; |
| 3413 if (isConst && hasInitializer) { | 3413 if (isConst && hasInitializer) { |
| 3414 variable = new ConstTopLevelVariableElementImpl(variableName); | 3414 variable = new ConstTopLevelVariableElementImpl(variableName); |
| 3415 } else { | 3415 } else { |
| 3416 variable = new TopLevelVariableElementImpl.forNode(variableName); | 3416 variable = new TopLevelVariableElementImpl.forNode(variableName); |
| 3417 } | 3417 } |
| 3418 element = variable; | 3418 element = variable; |
| 3419 if (node.parent.parent is TopLevelVariableDeclaration) { | 3419 if (node.parent.parent is TopLevelVariableDeclaration) { |
| 3420 _setDocRange(element, node.parent.parent); | 3420 _setDoc(element, node.parent.parent); |
| 3421 } | 3421 } |
| 3422 if ((node.parent as VariableDeclarationList).type == null) { | 3422 if ((node.parent as VariableDeclarationList).type == null) { |
| 3423 variable.hasImplicitType = true; | 3423 variable.hasImplicitType = true; |
| 3424 } | 3424 } |
| 3425 _currentHolder.addTopLevelVariable(variable); | 3425 _currentHolder.addTopLevelVariable(variable); |
| 3426 variableName.staticElement = element; | 3426 variableName.staticElement = element; |
| 3427 } | 3427 } |
| 3428 element.const3 = isConst; | 3428 element.const3 = isConst; |
| 3429 element.final2 = isFinal; | 3429 element.final2 = isFinal; |
| 3430 if (hasInitializer) { | 3430 if (hasInitializer) { |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3544 return parent.body; | 3544 return parent.body; |
| 3545 } else if (parent is MethodDeclaration) { | 3545 } else if (parent is MethodDeclaration) { |
| 3546 return parent.body; | 3546 return parent.body; |
| 3547 } | 3547 } |
| 3548 parent = parent.parent; | 3548 parent = parent.parent; |
| 3549 } | 3549 } |
| 3550 return null; | 3550 return null; |
| 3551 } | 3551 } |
| 3552 | 3552 |
| 3553 /** | 3553 /** |
| 3554 * If the given [node] has a documentation comment, remember its range | 3554 * If the given [node] has a documentation comment, remember its content |
| 3555 * into the given [element]. | 3555 * and range into the given [element]. |
| 3556 */ | 3556 */ |
| 3557 void _setDocRange(ElementImpl element, AnnotatedNode node) { | 3557 void _setDoc(ElementImpl element, AnnotatedNode node) { |
| 3558 Comment comment = node.documentationComment; | 3558 Comment comment = node.documentationComment; |
| 3559 if (comment != null && comment.isDocumentation) { | 3559 if (comment != null && comment.isDocumentation) { |
| 3560 element.documentationComment = |
| 3561 comment.tokens.map((Token t) => t.lexeme).join('\n'); |
| 3560 element.setDocRange(comment.offset, comment.length); | 3562 element.setDocRange(comment.offset, comment.length); |
| 3561 } | 3563 } |
| 3562 } | 3564 } |
| 3563 | 3565 |
| 3564 /** | 3566 /** |
| 3565 * Sets the visible source range for formal parameter. | 3567 * Sets the visible source range for formal parameter. |
| 3566 */ | 3568 */ |
| 3567 void _setParameterVisibleRange( | 3569 void _setParameterVisibleRange( |
| 3568 FormalParameter node, ParameterElementImpl element) { | 3570 FormalParameter node, ParameterElementImpl element) { |
| 3569 FunctionBody body = _getFunctionBody(node); | 3571 FunctionBody body = _getFunctionBody(node); |
| (...skipping 9808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13378 nonFields.add(node); | 13380 nonFields.add(node); |
| 13379 return null; | 13381 return null; |
| 13380 } | 13382 } |
| 13381 | 13383 |
| 13382 @override | 13384 @override |
| 13383 Object visitNode(AstNode node) => node.accept(TypeResolverVisitor_this); | 13385 Object visitNode(AstNode node) => node.accept(TypeResolverVisitor_this); |
| 13384 | 13386 |
| 13385 @override | 13387 @override |
| 13386 Object visitWithClause(WithClause node) => null; | 13388 Object visitWithClause(WithClause node) => null; |
| 13387 } | 13389 } |
| OLD | NEW |