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 |