Merge pull request #1953 from davidmorgan/fix-unnecessary-final

Fix unnecessary_final: don't fire for fields.
diff --git a/lib/src/rules/unnecessary_final.dart b/lib/src/rules/unnecessary_final.dart
index d6f29f8..8a23c5c 100644
--- a/lib/src/rules/unnecessary_final.dart
+++ b/lib/src/rules/unnecessary_final.dart
@@ -50,7 +50,7 @@
     registry
       ..addFormalParameterList(this, visitor)
       ..addForStatement(this, visitor)
-      ..addVariableDeclaration(this, visitor);
+      ..addVariableDeclarationStatement(this, visitor);
   }
 }
 
@@ -85,9 +85,9 @@
   }
 
   @override
-  void visitVariableDeclaration(VariableDeclaration node) {
-    if (node.isFinal) {
-      rule.reportLint(node.name);
+  void visitVariableDeclarationStatement(VariableDeclarationStatement node) {
+    if (node.variables.isFinal) {
+      rule.reportLint(node.variables);
     }
   }
 }
diff --git a/test/rules/unnecessary_final.dart b/test/rules/unnecessary_final.dart
index 3bb25cd..2b00643 100644
--- a/test/rules/unnecessary_final.dart
+++ b/test/rules/unnecessary_final.dart
@@ -19,3 +19,7 @@
     print(((String char) => char.length)(char)); // OK
   }
 }
+
+class GoodClass {
+  final int x = 3; // OK
+}