On the way refactorings
This commit is contained in:
@@ -42,8 +42,8 @@ public interface ModuleConfiguration {
|
||||
void addDefaultImports(@NotNull Collection<JetImportDirective> directives);
|
||||
|
||||
/**
|
||||
*
|
||||
* This method is called every time a namespace descriptor is created. Use it to add extra descriptors to the namespace, e.g. merge a Java package with a Kotlin one
|
||||
* This method is called every time a namespace descriptor is created. Use it to add extra descriptors to the namespace, e.g. merge a
|
||||
* Java package with a Kotlin one
|
||||
*/
|
||||
void extendNamespaceScope(@NotNull BindingTrace trace, @NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope);
|
||||
|
||||
|
||||
+15
-5
@@ -22,7 +22,10 @@ import org.jetbrains.jet.lang.psi.JetParameter;
|
||||
import org.jetbrains.jet.lang.resolve.AbstractScopeAdapter;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.*;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ClassReceiver;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||
|
||||
@@ -43,14 +46,21 @@ public class MutableClassDescriptor extends MutableClassDescriptorLite {
|
||||
private final WritableScope scopeForSupertypeResolution;
|
||||
private WritableScope scopeForInitializers = null; //contains members + primary constructor value parameters + map for backing fields
|
||||
|
||||
public MutableClassDescriptor(@NotNull BindingTrace trace, @NotNull DeclarationDescriptor containingDeclaration, @NotNull JetScope outerScope, ClassKind kind) {
|
||||
public MutableClassDescriptor(@NotNull BindingTrace trace, @NotNull DeclarationDescriptor containingDeclaration,
|
||||
@NotNull JetScope outerScope, ClassKind kind) {
|
||||
super(containingDeclaration, kind);
|
||||
|
||||
RedeclarationHandler redeclarationHandler = RedeclarationHandler.DO_NOTHING;
|
||||
|
||||
setScopeForMemberLookup(new WritableScopeImpl(JetScope.EMPTY, this, redeclarationHandler).setDebugName("MemberLookup").changeLockLevel(WritableScope.LockLevel.BOTH));
|
||||
this.scopeForSupertypeResolution = new WritableScopeImpl(outerScope, this, redeclarationHandler).setDebugName("SupertypeResolution").changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
this.scopeForMemberResolution = new WritableScopeImpl(scopeForSupertypeResolution, this, redeclarationHandler).setDebugName("MemberResolution").changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
setScopeForMemberLookup(new WritableScopeImpl(JetScope.EMPTY, this, redeclarationHandler)
|
||||
.setDebugName("MemberLookup")
|
||||
.changeLockLevel(WritableScope.LockLevel.BOTH));
|
||||
this.scopeForSupertypeResolution = new WritableScopeImpl(outerScope, this, redeclarationHandler)
|
||||
.setDebugName("SupertypeResolution")
|
||||
.changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
this.scopeForMemberResolution = new WritableScopeImpl(scopeForSupertypeResolution, this, redeclarationHandler)
|
||||
.setDebugName("MemberResolution")
|
||||
.changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
if (getKind() == ClassKind.TRAIT) {
|
||||
setUpScopeForInitializers(this);
|
||||
}
|
||||
|
||||
+3
-2
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.jet.lang.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||
|
||||
@@ -30,7 +29,9 @@ public class NamespaceDescriptorImpl extends AbstractNamespaceDescriptorImpl imp
|
||||
|
||||
private WritableScope memberScope;
|
||||
|
||||
public NamespaceDescriptorImpl(@NotNull NamespaceDescriptorParent containingDeclaration, @NotNull List<AnnotationDescriptor> annotations, @NotNull String name) {
|
||||
public NamespaceDescriptorImpl(@NotNull NamespaceDescriptorParent containingDeclaration,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull String name) {
|
||||
super(containingDeclaration, annotations, name);
|
||||
}
|
||||
|
||||
|
||||
@@ -109,6 +109,9 @@ public class Visibilities {
|
||||
|
||||
public static final Set<Visibility> INTERNAL_VISIBILITIES = Sets.newHashSet(PRIVATE, INTERNAL, INTERNAL_PROTECTED, LOCAL);
|
||||
|
||||
private Visibilities() {
|
||||
}
|
||||
|
||||
public static boolean isVisible(DeclarationDescriptorWithVisibility what, DeclarationDescriptor from) {
|
||||
DeclarationDescriptorWithVisibility parent = what;
|
||||
while (parent != null) {
|
||||
|
||||
@@ -57,13 +57,13 @@ public class JetParsing extends AbstractJetParsing {
|
||||
/*package*/ static final TokenSet TYPE_REF_FIRST = TokenSet.create(LBRACKET, IDENTIFIER, FUN_KEYWORD, LPAR, CAPITALIZED_THIS_KEYWORD, HASH);
|
||||
private static final TokenSet RECEIVER_TYPE_TERMINATORS = TokenSet.create(DOT, SAFE_ACCESS);
|
||||
|
||||
public static JetParsing createForTopLevel(SemanticWhitespaceAwarePsiBuilder builder) {
|
||||
static JetParsing createForTopLevel(SemanticWhitespaceAwarePsiBuilder builder) {
|
||||
JetParsing jetParsing = new JetParsing(builder);
|
||||
jetParsing.myExpressionParsing = new JetExpressionParsing(builder, jetParsing);
|
||||
return jetParsing;
|
||||
}
|
||||
|
||||
public static JetParsing createForByClause(final SemanticWhitespaceAwarePsiBuilder builder) {
|
||||
private static JetParsing createForByClause(final SemanticWhitespaceAwarePsiBuilder builder) {
|
||||
final SemanticWhitespaceAwarePsiBuilderForByClause builderForByClause = new SemanticWhitespaceAwarePsiBuilderForByClause(builder);
|
||||
JetParsing jetParsing = new JetParsing(builderForByClause);
|
||||
jetParsing.myExpressionParsing = new JetExpressionParsing(builderForByClause, jetParsing) {
|
||||
@@ -94,7 +94,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* : preamble toplevelObject[| import]* [eof]
|
||||
* ;
|
||||
*/
|
||||
public void parseFile() {
|
||||
void parseFile() {
|
||||
PsiBuilder.Marker fileMarker = mark();
|
||||
|
||||
parsePreamble();
|
||||
@@ -297,7 +297,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
/*
|
||||
* (modifier | attribute)*
|
||||
*/
|
||||
public boolean parseModifierList(JetNodeType nodeType, boolean allowShortAnnotations) {
|
||||
boolean parseModifierList(JetNodeType nodeType, boolean allowShortAnnotations) {
|
||||
return parseModifierList(nodeType, null, allowShortAnnotations);
|
||||
}
|
||||
|
||||
@@ -306,7 +306,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
*
|
||||
* Feeds modifiers (not attributes) into the passed consumer, if it is not null
|
||||
*/
|
||||
public boolean parseModifierList(JetNodeType nodeType, Consumer<IElementType> tokenConsumer, boolean allowShortAnnotations) {
|
||||
boolean parseModifierList(JetNodeType nodeType, @Nullable Consumer<IElementType> tokenConsumer, boolean allowShortAnnotations) {
|
||||
PsiBuilder.Marker list = mark();
|
||||
boolean empty = true;
|
||||
while (!eof()) {
|
||||
@@ -336,8 +336,10 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* : annotation*
|
||||
* ;
|
||||
*/
|
||||
public void parseAnnotations(boolean allowShortAnnotations) {
|
||||
while (parseAnnotation(allowShortAnnotations));
|
||||
void parseAnnotations(boolean allowShortAnnotations) {
|
||||
while (true) {
|
||||
if (!(parseAnnotation(allowShortAnnotations))) break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -417,7 +419,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* (classBody? | enumClassBody)
|
||||
* ;
|
||||
*/
|
||||
public IElementType parseClass(boolean enumClass) {
|
||||
IElementType parseClass(boolean enumClass) {
|
||||
assert _atSet(CLASS_KEYWORD, TRAIT_KEYWORD);
|
||||
advance(); // CLASS_KEYWORD or TRAIT_KEYWORD
|
||||
|
||||
@@ -649,7 +651,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* : "object" SimpleName? ":" delegationSpecifier{","}? classBody?
|
||||
* ;
|
||||
*/
|
||||
public void parseObject(boolean named, boolean optionalBody) {
|
||||
void parseObject(boolean named, boolean optionalBody) {
|
||||
assert _at(OBJECT_KEYWORD);
|
||||
|
||||
advance(); // OBJECT_KEYWORD
|
||||
@@ -785,7 +787,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* : modifiers "type" SimpleName (typeParameters typeConstraints)? "=" type
|
||||
* ;
|
||||
*/
|
||||
public JetNodeType parseTypeDef() {
|
||||
JetNodeType parseTypeDef() {
|
||||
assert _at(TYPE_KEYWORD);
|
||||
|
||||
advance(); // TYPE_KEYWORD
|
||||
@@ -815,11 +817,11 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* (getter? setter? | setter? getter?) SEMI?
|
||||
* ;
|
||||
*/
|
||||
public JetNodeType parseProperty() {
|
||||
private JetNodeType parseProperty() {
|
||||
return parseProperty(false);
|
||||
}
|
||||
|
||||
public JetNodeType parseProperty(boolean local) {
|
||||
JetNodeType parseProperty(boolean local) {
|
||||
if (at(VAL_KEYWORD) || at(VAR_KEYWORD)) {
|
||||
advance(); // VAL_KEYWORD or VAR_KEYWORD
|
||||
}
|
||||
@@ -970,7 +972,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* functionBody?
|
||||
* ;
|
||||
*/
|
||||
public IElementType parseFunction() {
|
||||
IElementType parseFunction() {
|
||||
assert _at(FUN_KEYWORD);
|
||||
|
||||
advance(); // FUN_KEYWORD
|
||||
@@ -1086,7 +1088,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* : "{" (expressions)* "}"
|
||||
* ;
|
||||
*/
|
||||
public void parseBlock() {
|
||||
void parseBlock() {
|
||||
PsiBuilder.Marker block = mark();
|
||||
|
||||
myBuilder.enableNewlines();
|
||||
@@ -1303,11 +1305,11 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* nullableType
|
||||
* : typeDescriptor "?"
|
||||
*/
|
||||
public void parseTypeRef() {
|
||||
void parseTypeRef() {
|
||||
parseTypeRef(TokenSet.EMPTY);
|
||||
}
|
||||
|
||||
public void parseTypeRef(TokenSet extraRecoverySet) {
|
||||
void parseTypeRef(TokenSet extraRecoverySet) {
|
||||
PsiBuilder.Marker typeRefMarker = parseTypeRefContents(extraRecoverySet);
|
||||
typeRefMarker.done(TYPE_REFERENCE);
|
||||
}
|
||||
@@ -1461,7 +1463,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
/*
|
||||
* (optionalProjection type){","}
|
||||
*/
|
||||
public PsiBuilder.Marker parseTypeArgumentList() {
|
||||
private PsiBuilder.Marker parseTypeArgumentList() {
|
||||
if (!at(LT)) return null;
|
||||
|
||||
PsiBuilder.Marker list = mark();
|
||||
@@ -1472,7 +1474,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
return list;
|
||||
}
|
||||
|
||||
public boolean tryParseTypeArgumentList(TokenSet extraRecoverySet) {
|
||||
boolean tryParseTypeArgumentList(TokenSet extraRecoverySet) {
|
||||
myBuilder.disableNewlines();
|
||||
advance(); // LT
|
||||
|
||||
@@ -1605,7 +1607,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
* : parameter ("=" element)?
|
||||
* ;
|
||||
*/
|
||||
public void parseValueParameterList(boolean isFunctionTypeContents, TokenSet recoverySet) {
|
||||
void parseValueParameterList(boolean isFunctionTypeContents, TokenSet recoverySet) {
|
||||
PsiBuilder.Marker parameters = mark();
|
||||
|
||||
myBuilder.disableNewlines();
|
||||
@@ -1736,10 +1738,6 @@ public class JetParsing extends AbstractJetParsing {
|
||||
this.tokens = TokenSet.create(token);
|
||||
}
|
||||
|
||||
public TokenDetector(TokenSet tokens) {
|
||||
this.tokens = tokens;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void consume(IElementType item) {
|
||||
if (tokens.contains(item)) {
|
||||
|
||||
@@ -22,8 +22,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
* @author Nikolay Krasko
|
||||
*/
|
||||
public final class ImportPath {
|
||||
final @NotNull FqName fqName;
|
||||
final boolean isAllUnder;
|
||||
private final @NotNull FqName fqName;
|
||||
private final boolean isAllUnder;
|
||||
|
||||
public ImportPath(@NotNull FqName fqName, boolean isAllUnder) {
|
||||
this.fqName = fqName;
|
||||
|
||||
Reference in New Issue
Block a user