On the way refactorings

This commit is contained in:
Nikolay Krasko
2012-05-02 12:20:54 +04:00
parent fac735a419
commit f67aebe4be
6 changed files with 46 additions and 34 deletions
@@ -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);
@@ -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);
}
@@ -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;