15
15
16
16
namespace Rubberduck . CodeAnalysis . Inspections . Concrete
17
17
{
18
+ /// <summary>
19
+ /// Locates arguments passed to functions or procedures for object parameters which the do not have a compatible declared type.
20
+ /// </summary>
21
+ /// <why>
22
+ /// The VBA compiler does not check whether different object types are compatible. Instead there is a runtime error whenever the types are incompatible.
23
+ /// </why>
24
+ /// <example hasResult="true">
25
+ /// <![CDATA[
26
+ /// IInterface:
27
+ ///
28
+ /// Public Sub DoSomething()
29
+ /// End Sub
30
+ ///
31
+ /// ------------------------------
32
+ /// Class1:
33
+ ///
34
+ ///'No Implements IInterface
35
+ ///
36
+ /// Public Sub DoSomething()
37
+ /// End Sub
38
+ ///
39
+ /// ------------------------------
40
+ /// Module1:
41
+ ///
42
+ /// Public Sub DoIt()
43
+ /// Dim cls As Class1
44
+ /// Set cls = New Class1
45
+ /// Foo cls
46
+ /// End Sub
47
+ ///
48
+ /// Public Sub Foo(cls As IInterface)
49
+ /// End Sub
50
+ /// ]]>
51
+ /// </example>
52
+ /// <example hasResult="false">
53
+ /// <![CDATA[
54
+ /// IInterface:
55
+ ///
56
+ /// Public Sub DoSomething()
57
+ /// End Sub
58
+ ///
59
+ /// ------------------------------
60
+ /// Class1:
61
+ ///
62
+ /// Implements IInterface
63
+ ///
64
+ /// Private Sub IInterface_DoSomething()
65
+ /// End Sub
66
+ ///
67
+ /// ------------------------------
68
+ /// Module1:
69
+ ///
70
+ /// Public Sub DoIt()
71
+ /// Dim cls As Class1
72
+ /// Set cls = New Class1
73
+ /// Foo cls
74
+ /// End Sub
75
+ ///
76
+ /// Public Sub Foo(cls As IInterface)
77
+ /// End Sub
78
+ /// ]]>
79
+ /// </example>
18
80
public class ArgumentWithIncompatibleObjectTypeInspection : InspectionBase
19
81
{
20
82
private readonly IDeclarationFinderProvider _declarationFinderProvider ;
21
83
private readonly ISetTypeResolver _setTypeResolver ;
22
84
23
- /// <summary>
24
- /// Locates arguments passed to functions or procedures for object parameters which the do not have a compatible declared type.
25
- /// </summary>
26
- /// <why>
27
- /// The VBA compiler does not check whether different object types are compatible. Instead there is a runtime error whenever the types are incompatible.
28
- /// </why>
29
- /// <example hasResult="true">
30
- /// <![CDATA[
31
- /// IInterface:
32
- ///
33
- /// Public Sub DoSomething()
34
- /// End Sub
35
- ///
36
- /// ------------------------------
37
- /// Class1:
38
- ///
39
- ///'No Implements IInterface
40
- ///
41
- /// Public Sub DoSomething()
42
- /// End Sub
43
- ///
44
- /// ------------------------------
45
- /// Module1:
46
- ///
47
- /// Public Sub DoIt()
48
- /// Dim cls As Class1
49
- /// Set cls = New Class1
50
- /// Foo cls
51
- /// End Sub
52
- ///
53
- /// Public Sub Foo(cls As IInterface)
54
- /// End Sub
55
- /// ]]>
56
- /// </example>
57
- /// <example hasResult="false">
58
- /// <![CDATA[
59
- /// IInterface:
60
- ///
61
- /// Public Sub DoSomething()
62
- /// End Sub
63
- ///
64
- /// ------------------------------
65
- /// Class1:
66
- ///
67
- /// Implements IInterface
68
- ///
69
- /// Private Sub IInterface_DoSomething()
70
- /// End Sub
71
- ///
72
- /// ------------------------------
73
- /// Module1:
74
- ///
75
- /// Public Sub DoIt()
76
- /// Dim cls As Class1
77
- /// Set cls = New Class1
78
- /// Foo cls
79
- /// End Sub
80
- ///
81
- /// Public Sub Foo(cls As IInterface)
82
- /// End Sub
83
- /// ]]>
84
- /// </example>
85
85
public ArgumentWithIncompatibleObjectTypeInspection ( RubberduckParserState state , ISetTypeResolver setTypeResolver )
86
86
: base ( state )
87
87
{
@@ -191,4 +191,4 @@ private string ResultDescription(IdentifierReference argumentReference, string a
191
191
return string . Format ( InspectionResults . SetAssignmentWithIncompatibleObjectTypeInspection , parameterName , parameterTypeName , argumentExpression , argumentTypeName ) ;
192
192
}
193
193
}
194
- }
194
+ }
0 commit comments