Array test passes.
This commit is contained in:
@@ -19,14 +19,6 @@ public final class DeclarationVisitor extends DeclarationDescriptorVisitor<Void,
|
||||
this.declarations = declarations;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visitClassDescriptor(@NotNull ClassDescriptor descriptor, @NotNull DeclarationContext context) {
|
||||
DeclarationContext classContext = declareClass(descriptor, context);
|
||||
declareClassConstructor(descriptor, context);
|
||||
declareClassMembers(descriptor, classContext);
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private DeclarationContext declareClass(@NotNull ClassDescriptor descriptor,
|
||||
@NotNull DeclarationContext context) {
|
||||
@@ -57,6 +49,15 @@ public final class DeclarationVisitor extends DeclarationDescriptorVisitor<Void,
|
||||
return declareName(descriptor, context, descriptor.getName());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Void visitClassDescriptor(@NotNull ClassDescriptor descriptor, @NotNull DeclarationContext context) {
|
||||
DeclarationContext classContext = declareClass(descriptor, context);
|
||||
declareClassConstructor(descriptor, context);
|
||||
declareClassMembers(descriptor, classContext);
|
||||
return null;
|
||||
}
|
||||
|
||||
private void declareClassMembers(@NotNull ClassDescriptor descriptor, @NotNull DeclarationContext context) {
|
||||
for (DeclarationDescriptor memberDescriptor :
|
||||
descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
||||
|
||||
@@ -39,11 +39,13 @@ public final class Declarations {
|
||||
}
|
||||
|
||||
//TODO: provide a mechanism to do intrinsics
|
||||
public void extractStandardLibrary(@NotNull JetStandardLibrary standardLibrary) {
|
||||
public void extractStandardLibrary(@NotNull JetStandardLibrary standardLibrary,
|
||||
@NotNull JsNameRef standardLibraryObjectName) {
|
||||
DeclarationVisitor visitor = new DeclarationVisitor(this);
|
||||
for (DeclarationDescriptor descriptor :
|
||||
standardLibrary.getLibraryScope().getAllDescriptors()) {
|
||||
descriptor.accept(visitor, DeclarationContext.rootContext(rootScope, null));
|
||||
descriptor.accept(visitor, DeclarationContext.rootContext(rootScope,
|
||||
standardLibraryObjectName));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,12 +68,12 @@ public final class Declarations {
|
||||
}
|
||||
|
||||
public boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
|
||||
return (descriptorToQualifierMap.get(descriptor) != null);
|
||||
return (descriptorToQualifierMap.get(descriptor.getOriginal()) != null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
|
||||
JsNameRef qualifier = descriptorToQualifierMap.get(descriptor);
|
||||
JsNameRef qualifier = descriptorToQualifierMap.get(descriptor.getOriginal());
|
||||
assert qualifier != null : "Cannot be null. Use hasQualifier to check.";
|
||||
return qualifier;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,9 @@ public final class IntrinsicDeclarationVisitor extends DeclarationDescriptorVisi
|
||||
|
||||
@Override
|
||||
public Void visitFunctionDescriptor(@NotNull FunctionDescriptor descriptor, @Nullable Void nothing) {
|
||||
intrinsics.declareIntrinsic(descriptor);
|
||||
if (!intrinsics.isIntrinsic(descriptor)) {
|
||||
intrinsics.declareIntrinsic(descriptor);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ public final class Intrinsics {
|
||||
|
||||
public boolean isIntrinsic(@NotNull DeclarationDescriptor descriptor) {
|
||||
if (descriptor instanceof FunctionDescriptor) {
|
||||
FunctionDescriptor functionDescriptor = (FunctionDescriptor) descriptor;
|
||||
FunctionDescriptor functionDescriptor = (FunctionDescriptor) descriptor.getOriginal();
|
||||
return descriptorToIntrinsicMap.containsKey(functionDescriptor);
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -86,10 +86,12 @@ public final class Translation {
|
||||
|
||||
public static JsProgram generateAst(@NotNull BindingContext bindingContext,
|
||||
@NotNull JetNamespace namespace, @NotNull Project project) {
|
||||
//TODO: move some of the code somewhere
|
||||
JetStandardLibrary standardLibrary = JetStandardLibrary.getJetStandardLibrary(project);
|
||||
NamespaceDescriptor descriptor = BindingUtils.getNamespaceDescriptor(bindingContext, namespace);
|
||||
StaticContext staticContext = StaticContext.generateStaticContext(standardLibrary, bindingContext);
|
||||
staticContext.getDeclarations().extractStandardLibrary(standardLibrary);
|
||||
staticContext.getDeclarations().
|
||||
extractStandardLibrary(standardLibrary, staticContext.getNamer().kotlinObject());
|
||||
staticContext.getDeclarations().extractDeclarations(descriptor);
|
||||
JsBlock block = staticContext.getProgram().getFragmentBlock(0);
|
||||
TranslationContext context = TranslationContext.rootContext(staticContext);
|
||||
|
||||
@@ -104,6 +104,7 @@ public final class BinaryOperationTranslator extends OperationTranslator {
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: refactor
|
||||
@NotNull
|
||||
private JsExpression asBinaryOperation() {
|
||||
if (isPropertyOnTheLeft && OperatorTable.isAssignment(getOperationToken())) {
|
||||
|
||||
@@ -36,6 +36,7 @@ public class ReferenceTranslator extends AbstractTranslator {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
//TODO: make this process simpler and clearer
|
||||
public JsExpression translateSimpleName() {
|
||||
tryResolveAsPropertyAccess();
|
||||
tryResolveAsThisQualifiedExpression();
|
||||
|
||||
@@ -120,6 +120,11 @@ public final class Namer {
|
||||
return reference;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsNameRef kotlinObject() {
|
||||
return kotlinName.makeRef();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsName declareStandardClass(@NotNull String name) {
|
||||
return kotlinScope.declareName(name);
|
||||
|
||||
Reference in New Issue
Block a user