Alexander Udalov
f6b43bb7b2
Extract interfaces out of Java*Type
2013-09-04 21:55:08 +04:00
Alexander Udalov
08bf7f8eee
Create abstract JavaElementFactory
...
Needed to wrap the logic of creation of elements/types, right now only array
types
2013-09-04 21:55:08 +04:00
Alexander Udalov
9f44a1eb0d
Extract interface out of JavaType
2013-09-04 21:55:08 +04:00
Alexander Udalov
d364834168
Extract interfaces out of Java*AnnotationArgument
2013-09-04 21:55:08 +04:00
Alexander Udalov
90e0d51463
Extract interface out of JavaAnnotationArgument
2013-09-04 21:55:07 +04:00
Alexander Udalov
2191073761
Minor, remove useless method
2013-09-04 21:55:07 +04:00
Alexander Udalov
dc048f0edd
Extract interface out of JavaAnnotation
2013-09-04 21:55:07 +04:00
Alexander Udalov
912d3426a4
Extract interface out of JavaClassifier
2013-09-04 21:55:07 +04:00
Alexander Udalov
4f99cb6999
Extract interface out of JavaPackage
2013-09-04 21:55:07 +04:00
Alexander Udalov
49a19705d1
Extract interface out of JavaMethod
2013-09-04 21:55:07 +04:00
Alexander Udalov
37beb9e50f
Extract interface out of JavaField
2013-09-04 21:55:07 +04:00
Alexander Udalov
ed146e51f9
Add an abstraction over ProgressIndicationProvider
2013-09-04 21:55:07 +04:00
Alexander Udalov
28367a412a
Remove different usages of Guava and intellij-core from JDR
2013-09-04 21:55:06 +04:00
Alexander Udalov
b9f96fe960
Introduce JavaClass.OriginKind
...
Answers to the question: where had this class originated from
2013-09-04 21:55:06 +04:00
Alexander Udalov
2d58bd571e
Extract JavaResolverPsiUtils
...
Will contain PSI-specific JDR utilities
2013-09-04 21:55:06 +04:00
Alexander Udalov
2328902c7f
Minor refactoring in MembersCache
...
Inline methods, provide a sane public interface
2013-09-04 21:55:06 +04:00
Alexander Udalov
a5ad63c8b6
Copy and adapt TypeConversionUtil#erasure
...
This helps to separate SAM resolution from PSI
2013-09-04 21:55:06 +04:00
Alexander Udalov
2b1a2c9988
Extract ExternalAnnotationResolver
2013-09-04 21:55:06 +04:00
Alexander Udalov
d5e47a61ad
Extract JavaMemberResolver out of JDR
...
JavaDescriptorResolver had a lot of methods which were used only in Java*Scope.
This is not good because JDR is a facade class that everyone uses from outside
and it's not required to find methods/fields/...
This logic is now extracted to JavaMemberResolver, which is passed to a scope
and is used to resolve its members ('members' here means classes, namespaces,
functions, properties, constructors)
2013-09-04 21:55:05 +04:00
Alexander Udalov
5eb82ae45b
Extract signature checking logic into an interface
...
Combine JavaMethodSignatureUtil and RawTypesCheck utility classes into a new
PsiBasedMethodSignatureChecker
2013-09-04 21:55:05 +04:00
Alexander Udalov
e93c573898
Create JavaSignatureFormatter, a wrapper over PsiFormatUtil
2013-09-04 21:55:05 +04:00
Alexander Udalov
94a99d33ea
Get rid of trace in JavaSupertypeResolver
...
The only place where it was used was INCOMPLETE_HIERARCHY report, which didn't
work at all (added TODO about it)
2013-09-04 21:55:05 +04:00
Alexander Udalov
af2c03ad70
Get rid of trace in JavaClassResolver and JavaNamespaceResolver
...
Create TraceBasedErrorReporter which reports ABI errors to the trace
2013-09-04 21:55:05 +04:00
Alexander Udalov
ab0224ef5c
Minor, KotlinClassFileHeader now exposes a FqName
2013-09-04 21:55:05 +04:00
Alexander Udalov
adc5f251ef
Add source descriptors lookup to JavaResolverCache
...
Use JavaResolverCache instead of BindingTrace in JavaClassResolver and
JavaNamespaceResolver
2013-09-04 21:55:05 +04:00
Alexander Udalov
640b05cfe9
Extract enum method utilities from DescriptorResolver
...
Create overloaded versions which accept JetType as a parameter to use them in
JDR where there's no deferred types
2013-09-04 21:55:05 +04:00
Alexander Udalov
d34a6d85e7
Remove BindingTrace from Java function and property resolvers
...
Extract FakeOverrideVisibilityResolver which invokes OverrideResolver with the
trace
2013-09-04 21:55:04 +04:00
Alexander Udalov
480ef9ea66
Create JavaResolverCache
...
An abstraction over BindingTrace which will be used in JDR
2013-09-04 21:55:04 +04:00
Alexander Udalov
760e4002cf
Extract interface out of ExternalSignatureResolver
2013-09-04 21:55:04 +04:00
Alexander Udalov
16d63f6109
Create PropagatedMethodSignature nested class
...
Should be an abstraction over SignaturesPropagationData
2013-09-04 21:55:04 +04:00
Alexander Udalov
1cc4b42756
Use ExternalSignatureResolver to resolve field signatures
2013-09-04 21:55:04 +04:00
Alexander Udalov
be3d835203
Refactor alternative method signatures
...
Create ExternalSignatureResolver which can resolve propagated and alternative
signatures, use it in JavaFunctionResolver and JavaConstructorResolver.
Move JavaValueParameterResolver.ValueParameters to SignaturesPropagationData,
since elsewhere it always had receiverType = null
2013-09-04 21:55:04 +04:00
Alexander Udalov
45346071a3
Minor, encapsulate logic
2013-09-04 21:55:04 +04:00
Alexander Udalov
517567fd24
Get rid of SAM_CONSTRUCTOR_TO_INTERFACE
...
use SamConstructorDescriptor instead
2013-09-04 21:55:04 +04:00
Alexander Udalov
4a620dfcbb
Get rid of SAM_ADAPTER_FUNCTION_TO_ORIGINAL
...
Use SAM adapters hierarchy instead
2013-09-04 21:55:04 +04:00
Alexander Udalov
f76942fd19
Get rid of JavaBindingContext.IS_DECLARED_IN_JAVA
...
Create specialized Java descriptor classes instead
2013-09-04 21:55:03 +04:00
Alexander Udalov
70c7fbc6d1
Refactor override resolution in JDR
...
Unify the code between JavaFunctionResolver and JavaPropertyResolver
2013-09-04 21:55:03 +04:00
Alexander Udalov
520f812030
getContainingClass() is never null for methods and fields
2013-09-04 21:55:03 +04:00
Alexander Udalov
4e1fb7e0eb
Add JavaValueParameter.isVararg()
2013-09-04 21:55:03 +04:00
Alexander Udalov
be5ba7fa0d
Migrate PropagationHeuristics from PSI to JavaElement
...
Aside from refactorings, minor changes in logic are made:
- to find out if a type of a value parameter is vararg ('ellipsis type'), we
now check if the method is vararg and the parameter is its last parameter
(instead of 'instanceof PsiEllipsisType')
- 'visitedSuperclasses' is now a Set: this better reflects what it's supposed
to represent. Also result check of the 'add()' method on a List was useless
2013-09-04 21:55:03 +04:00
Alexander Udalov
2c4c1d7cc6
hashCode, equals, toString for JavaElement
2013-09-04 21:55:03 +04:00
Alexander Udalov
34a552abfc
Migrate the rest of resolvers from PSI to JavaElement
...
JavaMethodSignatureUtil needs to be handled specially later
2013-09-04 21:55:03 +04:00
Alexander Udalov
f1892372eb
Move and rename JDR.ValueParameterDescriptors
2013-09-04 21:55:02 +04:00
Alexander Udalov
cc45cf2a4e
Rename JavaSignatureResolver to TypeParameterResolver
...
Also rename 'parameterResolver' field to 'valueParameterResolver'
2013-09-04 21:55:02 +04:00
Alexander Udalov
944d1fc59e
Refactor JavaSignatureResolver
...
Now it has the only method returning Initializer, an object which can be told
to initialize resolved descriptors later, or to obtain these descriptors.
Delete useless methods, combine the remaining ones
2013-09-04 21:55:02 +04:00
Alexander Udalov
a1f3a56c25
Refactor TypeVariableResolver
...
Delete 'context' field which was used only for debugging
2013-09-04 21:55:02 +04:00
Alexander Udalov
04516376c0
Migrate SAMUtils from PSI to JavaElement
...
- create JavaTypeSubstitutor as a mirror for PsiSubstitutor
- copy-paste MethodSignatureUtil.areSignaturesErasureEqual() and migrate it to
JavaTypeSubstitutor
- use a pair of method and substitutor instead of
'MethodSignatureBackedByPsiMethod'
- add JavaClass.getDefaultType() which goes into JavaPsiFacade and creates an
unsubstituted PsiClassType for the class
- green code
The only PSI usage left is TypeConversionUtil.erasure(), which needs to be
copied and migrated somehow
2013-09-04 21:55:02 +04:00
Alexander Udalov
a3d9d4fe66
Move classes around in java-specific parts of compiler
...
- move JetClsMethod and JetJavaMirrorMarker to 'jetAsJava' package
- move JetClsMethodImpl out of 'wrappers' packages
- move TypeVariableResolver to 'resolver' package, make it package-local
- move MembersCache and NamedMembers to 'scope', make the former package-local
2013-09-04 21:55:02 +04:00
Alexander Udalov
c18615f704
Rename JavaCompileTimeConstResolver to AnnotationArgumentResolver
2013-09-04 21:55:02 +04:00
Alexander Udalov
f98a949fdd
Migrate JavaAnnotationResolver from PSI to JavaElement
...
Create a bunch of annotation argument classes, which serve as wrappers over
PsiAnnotationMemberValue class, but also have a Name
2013-09-04 21:55:02 +04:00