| Index: pkg/analysis_server/lib/src/computer/computer_highlights.dart
|
| diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
|
| index b894cd8dd3c3393a2b1d423282d26e23082185f7..0491336d3a78565f4190ac6118ecef43760da9e8 100644
|
| --- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart
|
| +++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
|
| @@ -63,7 +63,7 @@ class DartUnitHighlightsComputer {
|
| if (_addIdentifierRegion_constructor(node)) {
|
| return;
|
| }
|
| - if (_addIdentifierRegion_dynamicLocal(node)) {
|
| + if (_addIdentifierRegion_dynamicType(node)) {
|
| return;
|
| }
|
| if (_addIdentifierRegion_getterSetterDeclaration(node)) {
|
| @@ -135,8 +135,13 @@ class DartUnitHighlightsComputer {
|
| return _addRegion_node(node, HighlightRegionType.CONSTRUCTOR);
|
| }
|
|
|
| - bool _addIdentifierRegion_dynamicLocal(SimpleIdentifier node) {
|
| - // no propagated type
|
| + bool _addIdentifierRegion_dynamicType(SimpleIdentifier node) {
|
| + // should be variable
|
| + Element element = node.staticElement;
|
| + if (element is! VariableElement) {
|
| + return false;
|
| + }
|
| + // has propagated type
|
| if (node.propagatedType != null) {
|
| return false;
|
| }
|
| @@ -146,20 +151,7 @@ class DartUnitHighlightsComputer {
|
| return false;
|
| }
|
| // OK
|
| - Element element = node.staticElement;
|
| - if (element is LocalVariableElement) {
|
| - HighlightRegionType type = node.inDeclarationContext()
|
| - ? HighlightRegionType.DYNAMIC_LOCAL_VARIABLE_DECLARATION
|
| - : HighlightRegionType.DYNAMIC_LOCAL_VARIABLE_REFERENCE;
|
| - return _addRegion_node(node, type);
|
| - }
|
| - if (element is ParameterElement) {
|
| - HighlightRegionType type = node.inDeclarationContext()
|
| - ? HighlightRegionType.DYNAMIC_PARAMETER_DECLARATION
|
| - : HighlightRegionType.DYNAMIC_PARAMETER_REFERENCE;
|
| - return _addRegion_node(node, type);
|
| - }
|
| - return false;
|
| + return _addRegion_node(node, HighlightRegionType.DYNAMIC_TYPE);
|
| }
|
|
|
| bool _addIdentifierRegion_field(SimpleIdentifier node) {
|
| @@ -167,6 +159,9 @@ class DartUnitHighlightsComputer {
|
| if (element is FieldFormalParameterElement) {
|
| element = (element as FieldFormalParameterElement).field;
|
| }
|
| + if (element is PropertyAccessorElement) {
|
| + element = (element as PropertyAccessorElement).variable;
|
| + }
|
| // prepare type
|
| HighlightRegionType type;
|
| if (element is FieldElement) {
|
| @@ -174,33 +169,12 @@ class DartUnitHighlightsComputer {
|
| if (enclosingElement is ClassElement && enclosingElement.isEnum) {
|
| type = HighlightRegionType.ENUM_CONSTANT;
|
| } else if (element.isStatic) {
|
| - type = HighlightRegionType.STATIC_FIELD_DECLARATION;
|
| + type = HighlightRegionType.FIELD_STATIC;
|
| } else {
|
| - type = node.inDeclarationContext()
|
| - ? HighlightRegionType.INSTANCE_FIELD_DECLARATION
|
| - : HighlightRegionType.INSTANCE_FIELD_REFERENCE;
|
| + type = HighlightRegionType.FIELD;
|
| }
|
| } else if (element is TopLevelVariableElement) {
|
| - type = HighlightRegionType.TOP_LEVEL_VARIABLE_DECLARATION;
|
| - }
|
| - if (element is PropertyAccessorElement) {
|
| - PropertyAccessorElement accessor = element;
|
| - Element enclosingElement = element.enclosingElement;
|
| - if (accessor.variable is TopLevelVariableElement) {
|
| - type = accessor.isGetter
|
| - ? HighlightRegionType.TOP_LEVEL_GETTER_REFERENCE
|
| - : HighlightRegionType.TOP_LEVEL_SETTER_REFERENCE;
|
| - } else if (enclosingElement is ClassElement && enclosingElement.isEnum) {
|
| - type = HighlightRegionType.ENUM_CONSTANT;
|
| - } else if (accessor.isStatic) {
|
| - type = accessor.isGetter
|
| - ? HighlightRegionType.STATIC_GETTER_REFERENCE
|
| - : HighlightRegionType.STATIC_SETTER_REFERENCE;
|
| - } else {
|
| - type = accessor.isGetter
|
| - ? HighlightRegionType.INSTANCE_GETTER_REFERENCE
|
| - : HighlightRegionType.INSTANCE_SETTER_REFERENCE;
|
| - }
|
| + type = HighlightRegionType.TOP_LEVEL_VARIABLE;
|
| }
|
| // add region
|
| if (type != null) {
|
| @@ -215,15 +189,10 @@ class DartUnitHighlightsComputer {
|
| return false;
|
| }
|
| HighlightRegionType type;
|
| - bool isTopLevel = element.enclosingElement is CompilationUnitElement;
|
| if (node.inDeclarationContext()) {
|
| - type = isTopLevel
|
| - ? HighlightRegionType.TOP_LEVEL_FUNCTION_DECLARATION
|
| - : HighlightRegionType.LOCAL_FUNCTION_DECLARATION;
|
| + type = HighlightRegionType.FUNCTION_DECLARATION;
|
| } else {
|
| - type = isTopLevel
|
| - ? HighlightRegionType.TOP_LEVEL_FUNCTION_REFERENCE
|
| - : HighlightRegionType.LOCAL_FUNCTION_REFERENCE;
|
| + type = HighlightRegionType.FUNCTION;
|
| }
|
| return _addRegion_node(node, type);
|
| }
|
| @@ -250,26 +219,11 @@ class DartUnitHighlightsComputer {
|
| // getter or setter
|
| PropertyAccessorElement propertyAccessorElement =
|
| element as PropertyAccessorElement;
|
| - bool isTopLevel = element.enclosingElement is CompilationUnitElement;
|
| - HighlightRegionType type;
|
| if (propertyAccessorElement.isGetter) {
|
| - if (isTopLevel) {
|
| - type = HighlightRegionType.TOP_LEVEL_GETTER_DECLARATION;
|
| - } else if (propertyAccessorElement.isStatic) {
|
| - type = HighlightRegionType.STATIC_GETTER_DECLARATION;
|
| - } else {
|
| - type = HighlightRegionType.INSTANCE_GETTER_DECLARATION;
|
| - }
|
| + return _addRegion_node(node, HighlightRegionType.GETTER_DECLARATION);
|
| } else {
|
| - if (isTopLevel) {
|
| - type = HighlightRegionType.TOP_LEVEL_SETTER_DECLARATION;
|
| - } else if (propertyAccessorElement.isStatic) {
|
| - type = HighlightRegionType.STATIC_SETTER_DECLARATION;
|
| - } else {
|
| - type = HighlightRegionType.INSTANCE_SETTER_DECLARATION;
|
| - }
|
| + return _addRegion_node(node, HighlightRegionType.SETTER_DECLARATION);
|
| }
|
| - return _addRegion_node(node, type);
|
| }
|
|
|
| bool _addIdentifierRegion_importPrefix(SimpleIdentifier node) {
|
| @@ -302,9 +256,12 @@ class DartUnitHighlightsComputer {
|
| return false;
|
| }
|
| // OK
|
| - HighlightRegionType type = node.inDeclarationContext()
|
| - ? HighlightRegionType.LOCAL_VARIABLE_DECLARATION
|
| - : HighlightRegionType.LOCAL_VARIABLE_REFERENCE;
|
| + HighlightRegionType type;
|
| + if (node.inDeclarationContext()) {
|
| + type = HighlightRegionType.LOCAL_VARIABLE_DECLARATION;
|
| + } else {
|
| + type = HighlightRegionType.LOCAL_VARIABLE;
|
| + }
|
| return _addRegion_node(node, type);
|
| }
|
|
|
| @@ -319,15 +276,15 @@ class DartUnitHighlightsComputer {
|
| HighlightRegionType type;
|
| if (node.inDeclarationContext()) {
|
| if (isStatic) {
|
| - type = HighlightRegionType.STATIC_METHOD_DECLARATION;
|
| + type = HighlightRegionType.METHOD_DECLARATION_STATIC;
|
| } else {
|
| - type = HighlightRegionType.INSTANCE_METHOD_DECLARATION;
|
| + type = HighlightRegionType.METHOD_DECLARATION;
|
| }
|
| } else {
|
| if (isStatic) {
|
| - type = HighlightRegionType.STATIC_METHOD_REFERENCE;
|
| + type = HighlightRegionType.METHOD_STATIC;
|
| } else {
|
| - type = HighlightRegionType.INSTANCE_METHOD_REFERENCE;
|
| + type = HighlightRegionType.METHOD;
|
| }
|
| }
|
| return _addRegion_node(node, type);
|
| @@ -338,10 +295,7 @@ class DartUnitHighlightsComputer {
|
| if (element is! ParameterElement) {
|
| return false;
|
| }
|
| - HighlightRegionType type = node.inDeclarationContext()
|
| - ? HighlightRegionType.PARAMETER_DECLARATION
|
| - : HighlightRegionType.PARAMETER_REFERENCE;
|
| - return _addRegion_node(node, type);
|
| + return _addRegion_node(node, HighlightRegionType.PARAMETER);
|
| }
|
|
|
| bool _addIdentifierRegion_typeParameter(SimpleIdentifier node) {
|
|
|