|
47 | 47 | import com.sun.tools.javac.api.JavacTaskImpl; |
48 | 48 | import com.sun.tools.javac.api.JavacTrees; |
49 | 49 | import com.sun.tools.javac.code.Attribute; |
| 50 | +import com.sun.tools.javac.code.Attribute.Compound; |
50 | 51 | import com.sun.tools.javac.code.ClassFinder; |
51 | 52 | import com.sun.tools.javac.code.Symbol; |
52 | | -import com.sun.tools.javac.code.Symtab; |
53 | | -import com.sun.tools.javac.code.TypeTag; |
54 | | -import com.sun.tools.javac.code.Types; |
55 | | -import com.sun.tools.javac.code.Attribute.Compound; |
56 | 53 | import com.sun.tools.javac.code.Symbol.ClassSymbol; |
57 | 54 | import com.sun.tools.javac.code.Symbol.CompletionFailure; |
58 | 55 | import com.sun.tools.javac.code.Symbol.MethodSymbol; |
|
62 | 59 | import com.sun.tools.javac.code.Symbol.TypeSymbol; |
63 | 60 | import com.sun.tools.javac.code.Symbol.TypeVariableSymbol; |
64 | 61 | import com.sun.tools.javac.code.Symbol.VarSymbol; |
| 62 | +import com.sun.tools.javac.code.Symtab; |
65 | 63 | import com.sun.tools.javac.code.Type.ArrayType; |
66 | 64 | import com.sun.tools.javac.code.Type.ClassType; |
67 | 65 | import com.sun.tools.javac.code.Type.ErrorType; |
|
73 | 71 | import com.sun.tools.javac.code.Type.ModuleType; |
74 | 72 | import com.sun.tools.javac.code.Type.PackageType; |
75 | 73 | import com.sun.tools.javac.code.Type.TypeVar; |
| 74 | +import com.sun.tools.javac.code.TypeTag; |
| 75 | +import com.sun.tools.javac.code.Types; |
76 | 76 | import com.sun.tools.javac.comp.Modules; |
77 | 77 | import com.sun.tools.javac.tree.JCTree; |
78 | | -import com.sun.tools.javac.tree.TreeInfo; |
79 | 78 | import com.sun.tools.javac.tree.JCTree.JCAnnotatedType; |
80 | 79 | import com.sun.tools.javac.tree.JCTree.JCAnnotation; |
81 | 80 | import com.sun.tools.javac.tree.JCTree.JCArrayTypeTree; |
|
101 | 100 | import com.sun.tools.javac.tree.JCTree.JCTypeUnion; |
102 | 101 | import com.sun.tools.javac.tree.JCTree.JCVariableDecl; |
103 | 102 | import com.sun.tools.javac.tree.JCTree.JCWildcard; |
| 103 | +import com.sun.tools.javac.tree.TreeInfo; |
104 | 104 | import com.sun.tools.javac.util.Context; |
105 | 105 | import com.sun.tools.javac.util.Names; |
106 | 106 |
|
@@ -130,26 +130,18 @@ public BindingKeyException(String message, Throwable cause) { |
130 | 130 | } |
131 | 131 |
|
132 | 132 | public class Bindings { |
133 | | - private Map<String, JavacAnnotationBinding> annotationBindings = new HashMap<>(); |
| 133 | + private Map<JavacAnnotationBinding, JavacAnnotationBinding> annotationBindings = new HashMap<>(); |
134 | 134 | public JavacAnnotationBinding getAnnotationBinding(Compound ann, IBinding recipient) { |
135 | 135 | JavacAnnotationBinding newInstance = new JavacAnnotationBinding(ann, JavacBindingResolver.this, recipient) { }; |
136 | | - String k = newInstance.getKey(); |
137 | | - if( k != null ) { |
138 | | - annotationBindings.putIfAbsent(k, newInstance); |
139 | | - return annotationBindings.get(k); |
140 | | - } |
141 | | - return null; |
| 136 | + annotationBindings.putIfAbsent(newInstance, newInstance); |
| 137 | + return annotationBindings.get(newInstance); |
142 | 138 | } |
143 | 139 | // |
144 | | - private Map<String, JavacMemberValuePairBinding> memberValuePairBindings = new HashMap<>(); |
| 140 | + private Map<JavacMemberValuePairBinding, JavacMemberValuePairBinding> memberValuePairBindings = new HashMap<>(); |
145 | 141 | public JavacMemberValuePairBinding getMemberValuePairBinding(MethodSymbol key, Attribute value) { |
146 | 142 | JavacMemberValuePairBinding newInstance = new JavacMemberValuePairBinding(key, value, JavacBindingResolver.this) { }; |
147 | | - String k = newInstance.getKey(); |
148 | | - if( k != null ) { |
149 | | - memberValuePairBindings.putIfAbsent(k, newInstance); |
150 | | - return memberValuePairBindings.get(k); |
151 | | - } |
152 | | - return null; |
| 143 | + memberValuePairBindings.putIfAbsent(newInstance, newInstance); |
| 144 | + return memberValuePairBindings.get(newInstance); |
153 | 145 | } |
154 | 146 | // |
155 | 147 | private Map<JavacMethodBinding, JavacMethodBinding> methodBindings = new HashMap<>(); |
@@ -179,38 +171,26 @@ private JavacMethodBinding insertAndReturn(JavacMethodBinding newInstance) { |
179 | 171 | return methodBindings.get(newInstance); |
180 | 172 | } |
181 | 173 | // |
182 | | - private Map<String, JavacModuleBinding> moduleBindings = new HashMap<>(); |
| 174 | + private Map<JavacModuleBinding, JavacModuleBinding> moduleBindings = new HashMap<>(); |
183 | 175 | public JavacModuleBinding getModuleBinding(ModuleType moduleType) { |
184 | 176 | JavacModuleBinding newInstance = new JavacModuleBinding(moduleType, JavacBindingResolver.this) { }; |
185 | | - String k = newInstance.getKey(); |
186 | | - if( k != null ) { |
187 | | - moduleBindings.putIfAbsent(k, newInstance); |
188 | | - return moduleBindings.get(k); |
189 | | - } |
190 | | - return null; |
| 177 | + moduleBindings.putIfAbsent(newInstance, newInstance); |
| 178 | + return moduleBindings.get(newInstance); |
191 | 179 | } |
192 | 180 | public JavacModuleBinding getModuleBinding(ModuleSymbol moduleSymbol) { |
193 | 181 | JavacModuleBinding newInstance = new JavacModuleBinding(moduleSymbol, JavacBindingResolver.this) { }; |
194 | | - String k = newInstance.getKey(); |
195 | | - if( k != null ) { |
196 | | - moduleBindings.putIfAbsent(k, newInstance); |
197 | | - return moduleBindings.get(k); |
198 | | - } |
199 | | - return null; |
| 182 | + moduleBindings.putIfAbsent(newInstance, newInstance); |
| 183 | + return moduleBindings.get(newInstance); |
200 | 184 | } |
201 | 185 | public JavacModuleBinding getModuleBinding(JCModuleDecl moduleDecl) { |
202 | 186 | JavacModuleBinding newInstance = new JavacModuleBinding(moduleDecl, JavacBindingResolver.this) { }; |
203 | 187 | // Overwrite existing |
204 | | - String k = newInstance.getKey(); |
205 | | - if( k != null ) { |
206 | | - moduleBindings.put(k, newInstance); |
207 | | - return moduleBindings.get(k); |
208 | | - } |
209 | | - return null; |
| 188 | + moduleBindings.put(newInstance, newInstance); |
| 189 | + return moduleBindings.get(newInstance); |
210 | 190 | } |
211 | 191 |
|
212 | 192 | // |
213 | | - private Map<String, JavacPackageBinding> packageBindings = new HashMap<>(); |
| 193 | + private Map<JavacPackageBinding, JavacPackageBinding> packageBindings = new HashMap<>(); |
214 | 194 | public JavacPackageBinding getPackageBinding(PackageSymbol packageSymbol) { |
215 | 195 | if (!packageSymbol.exists()) { |
216 | 196 | return null; |
@@ -263,15 +243,14 @@ private JavacPackageBinding preferentiallyInsertPackageBinding(JavacPackageBindi |
263 | 243 | // A package binding may be created while traversing something as simple as a name. |
264 | 244 | // The binding using name-only logic should be instantiated, but |
265 | 245 | // when a proper symbol is found, it should be added to that object. |
266 | | - String k = newest == null ? null : newest.getKey(); |
267 | | - if( k != null ) { |
268 | | - JavacPackageBinding current = packageBindings.get(k); |
| 246 | + if( newest != null ) { |
| 247 | + JavacPackageBinding current = packageBindings.get(newest); |
269 | 248 | if( current == null ) { |
270 | | - packageBindings.putIfAbsent(k, newest); |
| 249 | + packageBindings.putIfAbsent(newest, newest); |
271 | 250 | } else if( current.getPackageSymbol() == null && newest.getPackageSymbol() != null) { |
272 | 251 | current.setPackageSymbol(newest.getPackageSymbol()); |
273 | 252 | } |
274 | | - return packageBindings.get(k); |
| 253 | + return packageBindings.get(newest); |
275 | 254 | } |
276 | 255 | return null; |
277 | 256 | } |
@@ -340,29 +319,21 @@ public JavacTypeVariableBinding getTypeVariableBinding(TypeVar typeVar) { |
340 | 319 | return typeVariableBindings.get(newInstance); |
341 | 320 | } |
342 | 321 | // |
343 | | - private Map<String, JavacVariableBinding> variableBindings = new HashMap<>(); |
| 322 | + private Map<JavacVariableBinding, JavacVariableBinding> variableBindings = new HashMap<>(); |
344 | 323 | public JavacVariableBinding getVariableBinding(VarSymbol varSymbol) { |
345 | 324 | if (varSymbol == null) { |
346 | 325 | return null; |
347 | 326 | } |
348 | 327 | JavacVariableBinding newInstance = new JavacVariableBinding(varSymbol, JavacBindingResolver.this) { }; |
349 | | - String k = newInstance.getKey(); |
350 | | - if( k != null ) { |
351 | | - variableBindings.putIfAbsent(k, newInstance); |
352 | | - return variableBindings.get(k); |
353 | | - } |
354 | | - return null; |
| 328 | + variableBindings.putIfAbsent(newInstance, newInstance); |
| 329 | + return variableBindings.get(newInstance); |
355 | 330 | } |
356 | 331 | // |
357 | | - private Map<String, JavacLambdaBinding> lambdaBindings = new HashMap<>(); |
| 332 | + private Map<JavacLambdaBinding, JavacLambdaBinding> lambdaBindings = new HashMap<>(); |
358 | 333 | public JavacLambdaBinding getLambdaBinding(JavacMethodBinding javacMethodBinding, LambdaExpression lambda) { |
359 | 334 | JavacLambdaBinding newInstance = new JavacLambdaBinding(javacMethodBinding, lambda); |
360 | | - String k = newInstance.getKey(); |
361 | | - if( k != null ) { |
362 | | - lambdaBindings.putIfAbsent(k, newInstance); |
363 | | - return lambdaBindings.get(k); |
364 | | - } |
365 | | - return null; |
| 335 | + lambdaBindings.putIfAbsent(newInstance, newInstance); |
| 336 | + return lambdaBindings.get(newInstance); |
366 | 337 | } |
367 | 338 |
|
368 | 339 | public IBinding getBinding(final Symbol owner, final com.sun.tools.javac.code.Type type) { |
|
0 commit comments