Fix analyzer pushing SHADOWED_VARIABLE warning for members shadowed in subclasses
This fixes a bug in the analyzer where it did not push the SHADOWED_VARIABLE_BASE_CLASS warning for members shadowed by variable in subclass. It does this by comparing the class which contains the shadowed member with the class containing the variable, and pushing SHADOWED_VARIABLE only if the classes are the same. Additionally, SHADOWED_VARIABLE_BASE_CLASS can take an extra symbol which helps to specify the line for non native base class.
This commit is contained in:
@@ -6,6 +6,6 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 5
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "a" is shadowing an already-declared variable at line 1.
|
||||
>> The local variable "a" is shadowing an already-declared variable at line 1 in the current class.
|
||||
1
|
||||
2
|
||||
|
||||
@@ -10,6 +10,6 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 5
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "a" is shadowing an already-declared variable at line 1.
|
||||
>> The local variable "a" is shadowing an already-declared variable at line 1 in the current class.
|
||||
1
|
||||
2
|
||||
|
||||
@@ -6,7 +6,7 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 6
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "a" is shadowing an already-declared variable at line 1.
|
||||
>> The local variable "a" is shadowing an already-declared variable at line 1 in the current class.
|
||||
1
|
||||
2
|
||||
1
|
||||
|
||||
@@ -2,5 +2,5 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 4
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local function parameter "shadow" is shadowing an already-declared variable at line 1.
|
||||
>> The local function parameter "shadow" is shadowing an already-declared variable at line 1 in the current class.
|
||||
shadow
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class_name ShadowingBase
|
||||
|
||||
const base_const_member = 1
|
||||
var base_variable_member
|
||||
|
||||
func base_function_member():
|
||||
pass
|
||||
@@ -1,4 +1,5 @@
|
||||
class_name ShadowedClass
|
||||
extends ShadowingBase
|
||||
|
||||
var member: int = 0
|
||||
|
||||
@@ -7,6 +8,7 @@ var print_debug := 'print_debug'
|
||||
var print := 'print'
|
||||
|
||||
@warning_ignore("unused_variable")
|
||||
@warning_ignore("unused_local_constant")
|
||||
func test():
|
||||
var Array := 'Array'
|
||||
var Node := 'Node'
|
||||
@@ -15,5 +17,8 @@ func test():
|
||||
var member := 'member'
|
||||
var reference := 'reference'
|
||||
var ShadowedClass := 'ShadowedClass'
|
||||
var base_variable_member
|
||||
const base_function_member = 1
|
||||
var base_const_member
|
||||
|
||||
print('warn')
|
||||
|
||||
@@ -1,34 +1,46 @@
|
||||
GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 5
|
||||
>> Line: 6
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "print_debug" has the same name as a built-in function.
|
||||
>> WARNING
|
||||
>> Line: 11
|
||||
>> Line: 13
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "Array" has the same name as a built-in type.
|
||||
>> WARNING
|
||||
>> Line: 12
|
||||
>> Line: 14
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "Node" has the same name as a native class.
|
||||
>> WARNING
|
||||
>> Line: 13
|
||||
>> Line: 15
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "is_same" has the same name as a built-in function.
|
||||
>> WARNING
|
||||
>> Line: 14
|
||||
>> Line: 16
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "sqrt" has the same name as a built-in function.
|
||||
>> WARNING
|
||||
>> Line: 15
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "member" is shadowing an already-declared variable at line 3.
|
||||
>> WARNING
|
||||
>> Line: 16
|
||||
>> SHADOWED_VARIABLE_BASE_CLASS
|
||||
>> The local variable "reference" is shadowing an already-declared method at the base class "RefCounted".
|
||||
>> WARNING
|
||||
>> Line: 17
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "member" is shadowing an already-declared variable at line 4 in the current class.
|
||||
>> WARNING
|
||||
>> Line: 18
|
||||
>> SHADOWED_VARIABLE_BASE_CLASS
|
||||
>> The local variable "reference" is shadowing an already-declared method in the base class "RefCounted".
|
||||
>> WARNING
|
||||
>> Line: 19
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "ShadowedClass" has the same name as a global class defined in "shadowning.gd".
|
||||
>> WARNING
|
||||
>> Line: 20
|
||||
>> SHADOWED_VARIABLE_BASE_CLASS
|
||||
>> The local variable "base_variable_member" is shadowing an already-declared variable at line 4 in the base class "ShadowingBase".
|
||||
>> WARNING
|
||||
>> Line: 21
|
||||
>> SHADOWED_VARIABLE_BASE_CLASS
|
||||
>> The local constant "base_function_member" is shadowing an already-declared function at line 6 in the base class "ShadowingBase".
|
||||
>> WARNING
|
||||
>> Line: 22
|
||||
>> SHADOWED_VARIABLE_BASE_CLASS
|
||||
>> The local variable "base_const_member" is shadowing an already-declared constant at line 3 in the base class "ShadowingBase".
|
||||
warn
|
||||
|
||||
@@ -6,4 +6,4 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 8
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local constant "TEST" is shadowing an already-declared constant at line 2.
|
||||
>> The local constant "TEST" is shadowing an already-declared constant at line 2 in the current class.
|
||||
|
||||
@@ -6,4 +6,4 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 8
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "foo" is shadowing an already-declared variable at line 1.
|
||||
>> The local variable "foo" is shadowing an already-declared variable at line 1 in the current class.
|
||||
|
||||
@@ -6,4 +6,4 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 2
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "test" is shadowing an already-declared function at line 1.
|
||||
>> The local variable "test" is shadowing an already-declared function at line 1 in the current class.
|
||||
|
||||
@@ -2,11 +2,11 @@ GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 5
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local function parameter "a" is shadowing an already-declared variable at line 3.
|
||||
>> The local function parameter "a" is shadowing an already-declared variable at line 3 in the current class.
|
||||
>> WARNING
|
||||
>> Line: 15
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local function parameter "v" is shadowing an already-declared variable at line 13.
|
||||
>> The local function parameter "v" is shadowing an already-declared variable at line 13 in the current class.
|
||||
a
|
||||
1
|
||||
b
|
||||
|
||||
Reference in New Issue
Block a user