|
28 | 28 | import groovy.transform.stc.ClosureSignatureConflictResolver; |
29 | 29 | import groovy.transform.stc.ClosureSignatureHint; |
30 | 30 | import org.codehaus.groovy.GroovyBugError; |
31 | | -import org.codehaus.groovy.ast.*; |
| 31 | +import org.codehaus.groovy.ast.ASTNode; |
| 32 | +import org.codehaus.groovy.ast.AnnotatedNode; |
| 33 | +import org.codehaus.groovy.ast.AnnotationNode; |
| 34 | +import org.codehaus.groovy.ast.ClassCodeVisitorSupport; |
32 | 35 | import org.codehaus.groovy.ast.ClassHelper; |
33 | | -import org.codehaus.groovy.ast.expr.*; |
34 | | -import org.codehaus.groovy.ast.stmt.*; |
| 36 | +import org.codehaus.groovy.ast.ClassNode; |
| 37 | +import org.codehaus.groovy.ast.ConstructorNode; |
| 38 | +import org.codehaus.groovy.ast.DynamicVariable; |
| 39 | +import org.codehaus.groovy.ast.FieldNode; |
| 40 | +import org.codehaus.groovy.ast.GenericsType; |
| 41 | +import org.codehaus.groovy.ast.InnerClassNode; |
| 42 | +import org.codehaus.groovy.ast.MethodNode; |
| 43 | +import org.codehaus.groovy.ast.Parameter; |
| 44 | +import org.codehaus.groovy.ast.PropertyNode; |
| 45 | +import org.codehaus.groovy.ast.Variable; |
| 46 | +import org.codehaus.groovy.ast.expr.ArgumentListExpression; |
| 47 | +import org.codehaus.groovy.ast.expr.AttributeExpression; |
| 48 | +import org.codehaus.groovy.ast.expr.BinaryExpression; |
| 49 | +import org.codehaus.groovy.ast.expr.BitwiseNegationExpression; |
| 50 | +import org.codehaus.groovy.ast.expr.CastExpression; |
| 51 | +import org.codehaus.groovy.ast.expr.ClassExpression; |
| 52 | +import org.codehaus.groovy.ast.expr.ClosureExpression; |
| 53 | +import org.codehaus.groovy.ast.expr.ClosureListExpression; |
| 54 | +import org.codehaus.groovy.ast.expr.ConstantExpression; |
| 55 | +import org.codehaus.groovy.ast.expr.ConstructorCallExpression; |
| 56 | +import org.codehaus.groovy.ast.expr.DeclarationExpression; |
| 57 | +import org.codehaus.groovy.ast.expr.EmptyExpression; |
| 58 | +import org.codehaus.groovy.ast.expr.Expression; |
| 59 | +import org.codehaus.groovy.ast.expr.FieldExpression; |
| 60 | +import org.codehaus.groovy.ast.expr.ListExpression; |
| 61 | +import org.codehaus.groovy.ast.expr.MapEntryExpression; |
| 62 | +import org.codehaus.groovy.ast.expr.MapExpression; |
| 63 | +import org.codehaus.groovy.ast.expr.MethodCall; |
| 64 | +import org.codehaus.groovy.ast.expr.MethodCallExpression; |
| 65 | +import org.codehaus.groovy.ast.expr.PostfixExpression; |
| 66 | +import org.codehaus.groovy.ast.expr.PrefixExpression; |
| 67 | +import org.codehaus.groovy.ast.expr.PropertyExpression; |
| 68 | +import org.codehaus.groovy.ast.expr.RangeExpression; |
| 69 | +import org.codehaus.groovy.ast.expr.SpreadExpression; |
| 70 | +import org.codehaus.groovy.ast.expr.StaticMethodCallExpression; |
| 71 | +import org.codehaus.groovy.ast.expr.TernaryExpression; |
| 72 | +import org.codehaus.groovy.ast.expr.TupleExpression; |
| 73 | +import org.codehaus.groovy.ast.expr.UnaryMinusExpression; |
| 74 | +import org.codehaus.groovy.ast.expr.UnaryPlusExpression; |
| 75 | +import org.codehaus.groovy.ast.expr.VariableExpression; |
| 76 | +import org.codehaus.groovy.ast.stmt.CaseStatement; |
| 77 | +import org.codehaus.groovy.ast.stmt.CatchStatement; |
| 78 | +import org.codehaus.groovy.ast.stmt.EmptyStatement; |
| 79 | +import org.codehaus.groovy.ast.stmt.ForStatement; |
| 80 | +import org.codehaus.groovy.ast.stmt.IfStatement; |
| 81 | +import org.codehaus.groovy.ast.stmt.ReturnStatement; |
| 82 | +import org.codehaus.groovy.ast.stmt.Statement; |
| 83 | +import org.codehaus.groovy.ast.stmt.SwitchStatement; |
| 84 | +import org.codehaus.groovy.ast.stmt.TryCatchStatement; |
| 85 | +import org.codehaus.groovy.ast.stmt.WhileStatement; |
35 | 86 | import org.codehaus.groovy.ast.tools.GenericsUtils; |
36 | 87 | import org.codehaus.groovy.ast.tools.WideningCategories; |
37 | 88 | import org.codehaus.groovy.classgen.ReturnAdder; |
|
51 | 102 | import org.objectweb.asm.Opcodes; |
52 | 103 |
|
53 | 104 | import java.lang.reflect.Modifier; |
54 | | -import java.util.*; |
| 105 | +import java.util.ArrayList; |
| 106 | +import java.util.Arrays; |
| 107 | +import java.util.Collection; |
| 108 | +import java.util.Collections; |
| 109 | +import java.util.Enumeration; |
| 110 | +import java.util.HashMap; |
| 111 | +import java.util.HashSet; |
| 112 | +import java.util.Iterator; |
| 113 | +import java.util.LinkedHashMap; |
| 114 | +import java.util.LinkedHashSet; |
| 115 | +import java.util.LinkedList; |
| 116 | +import java.util.List; |
| 117 | +import java.util.Map; |
| 118 | +import java.util.Set; |
55 | 119 | import java.util.concurrent.atomic.AtomicLong; |
56 | 120 | import java.util.concurrent.atomic.AtomicReference; |
57 | 121 |
|
58 | | -import static org.codehaus.groovy.ast.ClassHelper.*; |
59 | | -import static org.codehaus.groovy.ast.tools.WideningCategories.*; |
60 | | -import static org.codehaus.groovy.syntax.Types.*; |
61 | | -import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.*; |
| 122 | +import static org.codehaus.groovy.ast.ClassHelper.BigDecimal_TYPE; |
| 123 | +import static org.codehaus.groovy.ast.ClassHelper.BigInteger_TYPE; |
| 124 | +import static org.codehaus.groovy.ast.ClassHelper.Boolean_TYPE; |
| 125 | +import static org.codehaus.groovy.ast.ClassHelper.Byte_TYPE; |
| 126 | +import static org.codehaus.groovy.ast.ClassHelper.CLASS_Type; |
| 127 | +import static org.codehaus.groovy.ast.ClassHelper.CLOSURE_TYPE; |
| 128 | +import static org.codehaus.groovy.ast.ClassHelper.Character_TYPE; |
| 129 | +import static org.codehaus.groovy.ast.ClassHelper.DYNAMIC_TYPE; |
| 130 | +import static org.codehaus.groovy.ast.ClassHelper.Double_TYPE; |
| 131 | +import static org.codehaus.groovy.ast.ClassHelper.Float_TYPE; |
| 132 | +import static org.codehaus.groovy.ast.ClassHelper.GROOVY_OBJECT_TYPE; |
| 133 | +import static org.codehaus.groovy.ast.ClassHelper.GSTRING_TYPE; |
| 134 | +import static org.codehaus.groovy.ast.ClassHelper.Integer_TYPE; |
| 135 | +import static org.codehaus.groovy.ast.ClassHelper.Iterator_TYPE; |
| 136 | +import static org.codehaus.groovy.ast.ClassHelper.LIST_TYPE; |
| 137 | +import static org.codehaus.groovy.ast.ClassHelper.Long_TYPE; |
| 138 | +import static org.codehaus.groovy.ast.ClassHelper.MAP_TYPE; |
| 139 | +import static org.codehaus.groovy.ast.ClassHelper.Number_TYPE; |
| 140 | +import static org.codehaus.groovy.ast.ClassHelper.OBJECT_TYPE; |
| 141 | +import static org.codehaus.groovy.ast.ClassHelper.PATTERN_TYPE; |
| 142 | +import static org.codehaus.groovy.ast.ClassHelper.RANGE_TYPE; |
| 143 | +import static org.codehaus.groovy.ast.ClassHelper.STRING_TYPE; |
| 144 | +import static org.codehaus.groovy.ast.ClassHelper.Short_TYPE; |
| 145 | +import static org.codehaus.groovy.ast.ClassHelper.VOID_TYPE; |
| 146 | +import static org.codehaus.groovy.ast.ClassHelper.boolean_TYPE; |
| 147 | +import static org.codehaus.groovy.ast.ClassHelper.byte_TYPE; |
| 148 | +import static org.codehaus.groovy.ast.ClassHelper.char_TYPE; |
| 149 | +import static org.codehaus.groovy.ast.ClassHelper.double_TYPE; |
| 150 | +import static org.codehaus.groovy.ast.ClassHelper.findSAM; |
| 151 | +import static org.codehaus.groovy.ast.ClassHelper.float_TYPE; |
| 152 | +import static org.codehaus.groovy.ast.ClassHelper.getNextSuperClass; |
| 153 | +import static org.codehaus.groovy.ast.ClassHelper.getUnwrapper; |
| 154 | +import static org.codehaus.groovy.ast.ClassHelper.getWrapper; |
| 155 | +import static org.codehaus.groovy.ast.ClassHelper.int_TYPE; |
| 156 | +import static org.codehaus.groovy.ast.ClassHelper.isNumberType; |
| 157 | +import static org.codehaus.groovy.ast.ClassHelper.isPrimitiveType; |
| 158 | +import static org.codehaus.groovy.ast.ClassHelper.isSAMType; |
| 159 | +import static org.codehaus.groovy.ast.ClassHelper.long_TYPE; |
| 160 | +import static org.codehaus.groovy.ast.ClassHelper.make; |
| 161 | +import static org.codehaus.groovy.ast.ClassHelper.short_TYPE; |
| 162 | +import static org.codehaus.groovy.ast.ClassHelper.void_WRAPPER_TYPE; |
| 163 | +import static org.codehaus.groovy.ast.tools.WideningCategories.LowestUpperBoundClassNode; |
| 164 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isBigDecCategory; |
| 165 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isBigIntCategory; |
| 166 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isDouble; |
| 167 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isDoubleCategory; |
| 168 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isFloat; |
| 169 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isFloatingCategory; |
| 170 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isIntCategory; |
| 171 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isLongCategory; |
| 172 | +import static org.codehaus.groovy.ast.tools.WideningCategories.isNumberCategory; |
| 173 | +import static org.codehaus.groovy.ast.tools.WideningCategories.lowestUpperBound; |
| 174 | +import static org.codehaus.groovy.syntax.Types.ASSIGN; |
| 175 | +import static org.codehaus.groovy.syntax.Types.ASSIGNMENT_OPERATOR; |
| 176 | +import static org.codehaus.groovy.syntax.Types.COMPARE_EQUAL; |
| 177 | +import static org.codehaus.groovy.syntax.Types.COMPARE_NOT_EQUAL; |
| 178 | +import static org.codehaus.groovy.syntax.Types.COMPARE_NOT_IN; |
| 179 | +import static org.codehaus.groovy.syntax.Types.COMPARE_NOT_INSTANCEOF; |
| 180 | +import static org.codehaus.groovy.syntax.Types.COMPARE_TO; |
| 181 | +import static org.codehaus.groovy.syntax.Types.DIVIDE; |
| 182 | +import static org.codehaus.groovy.syntax.Types.DIVIDE_EQUAL; |
| 183 | +import static org.codehaus.groovy.syntax.Types.ELVIS_EQUAL; |
| 184 | +import static org.codehaus.groovy.syntax.Types.EQUAL; |
| 185 | +import static org.codehaus.groovy.syntax.Types.FIND_REGEX; |
| 186 | +import static org.codehaus.groovy.syntax.Types.KEYWORD_IN; |
| 187 | +import static org.codehaus.groovy.syntax.Types.KEYWORD_INSTANCEOF; |
| 188 | +import static org.codehaus.groovy.syntax.Types.LEFT_SQUARE_BRACKET; |
| 189 | +import static org.codehaus.groovy.syntax.Types.MINUS_MINUS; |
| 190 | +import static org.codehaus.groovy.syntax.Types.MOD; |
| 191 | +import static org.codehaus.groovy.syntax.Types.MOD_EQUAL; |
| 192 | +import static org.codehaus.groovy.syntax.Types.PLUS_PLUS; |
| 193 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.ArrayList_TYPE; |
| 194 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.Collection_TYPE; |
| 195 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.Matcher_TYPE; |
| 196 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.UNKNOWN_PARAMETER_TYPE; |
| 197 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.addMethodLevelDeclaredGenerics; |
| 198 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.allParametersAndArgumentsMatch; |
| 199 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsConnections; |
| 200 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContext; |
| 201 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.applyGenericsContextToParameterClass; |
| 202 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.boundUnboundedWildcards; |
| 203 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.checkCompatibleAssignmentTypes; |
| 204 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.checkPossibleLooseOfPrecision; |
| 205 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.chooseBestMethod; |
| 206 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.evaluateExpression; |
| 207 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsConnections; |
| 208 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsParameterMapOfThis; |
| 209 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findDGMMethodsByNameAndArguments; |
| 210 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findSetters; |
| 211 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findTargetVariable; |
| 212 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.fullyResolveType; |
| 213 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.getGenericsWithoutArray; |
| 214 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.getOperationName; |
| 215 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.implementsInterfaceOrIsSubclassOf; |
| 216 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isArrayOp; |
| 217 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isAssignableTo; |
| 218 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isAssignment; |
| 219 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isBeingCompiled; |
| 220 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isBitOperator; |
| 221 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isBoolIntrinsicOp; |
| 222 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isClassClassNodeWrappingConcreteType; |
| 223 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isCompareToBoolean; |
| 224 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isOperationInGroup; |
| 225 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isParameterizedWithGStringOrGStringString; |
| 226 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isParameterizedWithString; |
| 227 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isPowerOperator; |
| 228 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isShiftOperation; |
| 229 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isTraitSelf; |
| 230 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isUsingGenericsOrIsArrayUsingGenerics; |
| 231 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isVargs; |
| 232 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isWildcardLeftHandSide; |
| 233 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.lastArgMatchesVarg; |
| 234 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.missesGenericsTypes; |
| 235 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.prettyPrintType; |
| 236 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.resolveClassNodeGenerics; |
| 237 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.toMethodParametersString; |
| 238 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.typeCheckMethodArgumentWithGenerics; |
| 239 | +import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.typeCheckMethodsWithGenerics; |
62 | 240 |
|
63 | 241 | /** |
64 | 242 | * The main class code visitor responsible for static type checking. It will perform various inspections like checking |
|
0 commit comments