arrayList simple test.

This commit is contained in:
Pavel Talanov
2011-12-08 17:14:14 +04:00
parent f375aa02e3
commit 71b1eac050
5 changed files with 44 additions and 36 deletions
@@ -50,7 +50,7 @@ public final class Declarations {
}
@NotNull
public NamingScope getScope(@NotNull DeclarationDescriptor descriptor) {
/*package*/ NamingScope getScope(@NotNull DeclarationDescriptor descriptor) {
NamingScope scope = descriptorToScopeMap.get(descriptor.getOriginal());
assert scope != null : "Unknown declaration";
return scope;
@@ -67,12 +67,12 @@ public final class Declarations {
return descriptorToNameMap.containsKey(descriptor.getOriginal());
}
public boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
/*package*/ boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
return (descriptorToQualifierMap.get(descriptor.getOriginal()) != null);
}
@NotNull
public JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
/*package*/ JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
JsNameRef qualifier = descriptorToQualifierMap.get(descriptor.getOriginal());
assert qualifier != null : "Cannot be null. Use hasQualifier to check.";
return qualifier;
@@ -92,13 +92,14 @@ public final class StandardClasses {
private void declareStandardMethodOrProperty(@NotNull DeclarationDescriptor descriptor,
@NotNull String kotlinLibName) {
String containingFQName = getFQName(getContainingDeclaration(descriptor));
declareStandardInnerDeclaration(containingFQName, getFQName(descriptor), kotlinLibName);
declareStandardInnerDeclaration(containingFQName, descriptor.getName(), kotlinLibName);
}
private void declareStandardInnerDeclaration(@NotNull String fullQualifiedClassName,
@NotNull String fullQualifiedMethodName,
@NotNull String shortMethodName,
@NotNull String kotlinLibName) {
JsScope classScope = scopeMap.get(fullQualifiedClassName);
String fullQualifiedMethodName = fullQualifiedClassName + "." + shortMethodName;
nameMap.put(fullQualifiedMethodName, classScope.declareName(kotlinLibName));
}
@@ -96,8 +96,8 @@ public final class TranslationContext {
if (aliaser().hasAliasForDeclaration(descriptor)) {
return aliaser().getAliasForDeclaration(descriptor);
}
if (staticContext.getStandardClasses().isStandardObject(descriptor)) {
return staticContext.getStandardClasses().getStandardObjectName(descriptor);
if (standardClasses().isStandardObject(descriptor)) {
return standardClasses().getStandardObjectName(descriptor);
}
if (dynamicContext.isDeclared(descriptor)) {
return dynamicContext.getLocalName(descriptor);
@@ -108,6 +108,20 @@ public final class TranslationContext {
throw new AssertionError("Undefined descriptor: " + DescriptorRenderer.getFQName(descriptor));
}
@NotNull
public JsNameRef getQualifierForDescriptor(@NotNull DeclarationDescriptor descriptor) {
if (standardClasses().isStandardObject(descriptor)) {
return namer().kotlinObject();
}
return declarations().getQualifier(descriptor);
}
public boolean hasQualifierForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return (declarations().hasQualifier(descriptor) ||
standardClasses().isStandardObject(descriptor));
}
@NotNull
public JsName getNameForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = BindingUtils.getDescriptorForElement(bindingContext(), element);
@@ -123,12 +137,12 @@ public final class TranslationContext {
}
public boolean isStandardObject(@NotNull DeclarationDescriptor descriptor) {
return staticContext.getStandardClasses().isStandardObject(descriptor);
return standardClasses().isStandardObject(descriptor);
}
@NotNull
public JsName getNameForStandardObject(@NotNull DeclarationDescriptor descriptor) {
return staticContext.getStandardClasses().getStandardObjectName(descriptor);
return standardClasses().getStandardObjectName(descriptor);
}
@NotNull
@@ -184,6 +198,11 @@ public final class TranslationContext {
return staticContext.getProgram();
}
@NotNull
private StandardClasses standardClasses() {
return staticContext.getStandardClasses();
}
@NotNull
public JsScope jsScope() {
return dynamicContext.jsScope();
@@ -72,7 +72,7 @@ public final class TranslationUtils {
}
assert BindingUtils.isOwnedByNamespace(descriptor)
: "Only classes and namespaces may own backing fields.";
JsNameRef qualifier = context.declarations().getQualifier(descriptor);
JsNameRef qualifier = context.getQualifierForDescriptor(descriptor);
return AstUtil.qualified(backingFieldName, qualifier);
}
@@ -95,29 +95,18 @@ public final class TranslationUtils {
return AstUtil.newAssignmentStatement(backingFieldReference, parameter.getName().makeRef());
}
public static boolean hasQualifier(@NotNull TranslationContext context, @NotNull DeclarationDescriptor descriptor) {
return context.declarations().hasQualifier(descriptor);
}
@NotNull
public static JsNameRef getQualifiedReference(@NotNull TranslationContext context,
@NotNull DeclarationDescriptor descriptor) {
JsName name = context.declarations().getName(descriptor);
JsNameRef reference = name.makeRef();
if (hasQualifier(context, descriptor)) {
JsNameRef qualifier = getQualifier(context, descriptor);
if (context.hasQualifierForDescriptor(descriptor)) {
JsNameRef qualifier = context.getQualifierForDescriptor(descriptor);
AstUtil.setQualifier(reference, qualifier);
}
return reference;
}
@NotNull
private static JsNameRef getQualifier(@NotNull TranslationContext context,
@NotNull DeclarationDescriptor descriptor) {
return context.declarations().getQualifier(descriptor);
}
@NotNull
public static JsNameRef getThisQualifiedNameReference(@NotNull TranslationContext context,
@NotNull JsName name) {
@@ -211,13 +200,12 @@ public final class TranslationUtils {
@Nullable
public static JsExpression getImplicitReceiver(@NotNull TranslationContext context,
@NotNull DeclarationDescriptor referencedDescriptor) {
if (!context.isDeclared(referencedDescriptor)) return null;
if (BindingUtils.isOwnedByClass(referencedDescriptor)) {
return TranslationUtils.getThisQualifier(context);
}
if (!BindingUtils.isOwnedByNamespace(referencedDescriptor)) return null;
return context.declarations().getQualifier(referencedDescriptor);
if (BindingUtils.isOwnedByNamespace(referencedDescriptor)) {
return context.getQualifierForDescriptor(referencedDescriptor);
}
return null;
}
}
+8 -8
View File
@@ -486,31 +486,31 @@ Kotlin.Array = Class.create({
Kotlin.ArrayList = Class.create({
initialize:function (len) {
this.array = [];
this.size = 0;
this.$size = 0;
},
get:function (index) {
if ((index < 0) || (index > this.size)) {
if ((index < 0) || (index > this.$size)) {
throw Kotlin.Exceptions.IndexOutOfBounds;
}
return (this.array)[index];
},
set:function (index, value) {
if ((index < 0) || (index > this.size)) {
if ((index < 0) || (index > this.$size)) {
throw Kotlin.Exceptions.IndexOutOfBounds;
}
(this.array)[index] = value;
},
size:function () {
return this.size;
return this.$size;
},
iterator:function () {
return new Kotlin.ArrayIterator(this);
},
isEmpty:function () {
return (this.size == 0);
return (this.$size == 0);
},
add:function (element) {
this.array[size++] = element;
this.array[this.$size++] = element;
},
addAll:function (collection) {
var it = collection.iterator();
@@ -519,10 +519,10 @@ Kotlin.ArrayList = Class.create({
}
},
remove:function (index) {
for (var i = index; i < this.size - 1; ++i) {
for (var i = index; i < this.$size - 1; ++i) {
this.array[i] = this.array[i + 1];
}
this.size--;
this.$size--;
}
});