Receivers introduced.

This commit is contained in:
Andrey Breslav
2011-09-18 17:26:17 +04:00
parent 7629ebe272
commit 8d42f4b267
59 changed files with 354 additions and 137 deletions
@@ -89,7 +89,7 @@ public abstract class JetPsiReference implements PsiPolyVariantReference {
JetFile file = (JetFile) getElement().getContainingFile();
BindingContext bindingContext = AnalyzerFacade.analyzeFileWithCache(file);
Collection<? extends DeclarationDescriptor> declarationDescriptors = bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, myExpression);
assert declarationDescriptors != null;
if (declarationDescriptors != null) return ResolveResult.EMPTY_ARRAY;
ResolveResult[] results = new ResolveResult[declarationDescriptors.size()];
int i = 0;
for (DeclarationDescriptor descriptor : declarationDescriptors) {
@@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.plugin.AnalyzerFacade;
import org.jetbrains.jet.resolve.DescriptorRenderer;
@@ -17,6 +17,9 @@ import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.java.JavaPackageScope;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.scopes.*;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExplicitReceiver;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lexer.JetTokens;
import org.jetbrains.jet.parsing.JetParsingTest;
@@ -506,8 +509,8 @@ public class JetTypeCheckerTest extends LightDaemonAnalyzerTestCase {
JetScope scope = new JetScopeAdapter(classDefinitions.BASIC_SCOPE) {
@NotNull
@Override
public JetType getThisType() {
return thisType;
public ReceiverDescriptor getImplicitReceiver() {
return new ExplicitReceiver(thisType);
}
};
assertType(scope, expression, expectedType);