Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(828)

Unified Diff: pkg/analyzer/lib/src/generated/element.dart

Issue 686113007: Report HintCode.UNUSED_LOCAL_VARIABLE for local variables whose value is never used. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/lib/src/generated/element.dart
diff --git a/pkg/analyzer/lib/src/generated/element.dart b/pkg/analyzer/lib/src/generated/element.dart
index 7962858113fac3e11d9dcab10b0b13aacef82c9a..5c3d4d035fe1cdbb7858196d3b270a35bfc50e14 100644
--- a/pkg/analyzer/lib/src/generated/element.dart
+++ b/pkg/analyzer/lib/src/generated/element.dart
@@ -8275,6 +8275,9 @@ class LocalVariableElementImpl extends VariableElementImpl implements LocalVaria
@override
bool get isPotentiallyMutatedInScope => hasModifier(Modifier.POTENTIALLY_MUTATED_IN_SCOPE);
+ @override
+ bool get isUsed => hasModifier(Modifier.IS_USED_VARIABLE);
+
/**
* Specifies that this variable is potentially mutated somewhere in closure.
*/
@@ -8290,6 +8293,13 @@ class LocalVariableElementImpl extends VariableElementImpl implements LocalVaria
}
/**
+ * Specifies that the value of this variable is used.
+ */
+ void markUsed() {
+ setModifier(Modifier.IS_USED_VARIABLE, true);
+ }
+
+ /**
* Set the toolkit specific information objects attached to this variable.
*
* @param toolkitObjects the toolkit objects attached to this variable
@@ -8750,47 +8760,52 @@ class Modifier extends Enum<Modifier> {
static const Modifier HAS_EXT_URI = const Modifier('HAS_EXT_URI', 9);
/**
+ * Indicates that the value of a variable is used - read or invoked.
+ */
+ static const Modifier IS_USED_VARIABLE = const Modifier('IS_USED_VARIABLE', 10);
+
+ /**
* Indicates that a class can validly be used as a mixin.
*/
- static const Modifier MIXIN = const Modifier('MIXIN', 10);
+ static const Modifier MIXIN = const Modifier('MIXIN', 11);
/**
* Indicates that the value of a parameter or local variable might be mutated within the context.
*/
- static const Modifier POTENTIALLY_MUTATED_IN_CONTEXT = const Modifier('POTENTIALLY_MUTATED_IN_CONTEXT', 11);
+ static const Modifier POTENTIALLY_MUTATED_IN_CONTEXT = const Modifier('POTENTIALLY_MUTATED_IN_CONTEXT', 12);
/**
* Indicates that the value of a parameter or local variable might be mutated within the scope.
*/
- static const Modifier POTENTIALLY_MUTATED_IN_SCOPE = const Modifier('POTENTIALLY_MUTATED_IN_SCOPE', 12);
+ static const Modifier POTENTIALLY_MUTATED_IN_SCOPE = const Modifier('POTENTIALLY_MUTATED_IN_SCOPE', 13);
/**
* Indicates that a class contains an explicit reference to 'super'.
*/
- static const Modifier REFERENCES_SUPER = const Modifier('REFERENCES_SUPER', 13);
+ static const Modifier REFERENCES_SUPER = const Modifier('REFERENCES_SUPER', 14);
/**
* Indicates that the pseudo-modifier 'set' was applied to the element.
*/
- static const Modifier SETTER = const Modifier('SETTER', 14);
+ static const Modifier SETTER = const Modifier('SETTER', 15);
/**
* Indicates that the modifier 'static' was applied to the element.
*/
- static const Modifier STATIC = const Modifier('STATIC', 15);
+ static const Modifier STATIC = const Modifier('STATIC', 16);
/**
* Indicates that the element does not appear in the source code but was implicitly created. For
* example, if a class does not define any constructors, an implicit zero-argument constructor
* will be created and it will be marked as being synthetic.
*/
- static const Modifier SYNTHETIC = const Modifier('SYNTHETIC', 16);
+ static const Modifier SYNTHETIC = const Modifier('SYNTHETIC', 17);
/**
* Indicates that a class was defined using an alias. TODO(brianwilkerson) This should be renamed
* to 'ALIAS'.
*/
- static const Modifier TYPEDEF = const Modifier('TYPEDEF', 17);
+ static const Modifier TYPEDEF = const Modifier('TYPEDEF', 18);
static const List<Modifier> values = const [
ABSTRACT,
@@ -8803,6 +8818,7 @@ class Modifier extends Enum<Modifier> {
GENERATOR,
GETTER,
HAS_EXT_URI,
+ IS_USED_VARIABLE,
MIXIN,
POTENTIALLY_MUTATED_IN_CONTEXT,
POTENTIALLY_MUTATED_IN_SCOPE,
@@ -11585,6 +11601,14 @@ abstract class VariableElementImpl extends ElementImpl implements VariableElemen
bool get isFinal => hasModifier(Modifier.FINAL);
/**
+ * Return `true` if this variable is used (i.e. purely read or invoked)
+ * somewhere in its scope. This information is only available for local
+ * variables (including parameters) and only after the compilation unit
+ * containing the variable has been resolved.
+ */
+ bool get isUsed => false;
+
+ /**
* Return `true` if this variable is potentially mutated somewhere in a closure. This
* information is only available for local variables (including parameters) and only after the
* compilation unit containing the variable has been resolved.
« no previous file with comments | « pkg/analysis_server/test/services/correction/fix_test.dart ('k') | pkg/analyzer/lib/src/generated/error.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698