diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 09e29f49917..8625a031ae1 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -13,15 +13,13 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
@@ -121,42 +119,44 @@
-
+
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
@@ -165,25 +165,27 @@
-
+
-
-
+
+
-
-
+
+
+
+
-
-
+
+
-
+
@@ -200,19 +202,19 @@
-
-
+
+
-
+
-
-
+
+
-
+
@@ -276,19 +278,19 @@
-
+
-
+
-
+
-
+
@@ -337,22 +339,22 @@
@@ -1188,8 +1190,8 @@
-
-
+
+
@@ -1236,7 +1238,7 @@
-
+
@@ -1249,7 +1251,6 @@
-
@@ -1274,6 +1275,7 @@
+
@@ -1283,55 +1285,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1353,15 +1306,6 @@
-
-
-
-
-
-
-
-
-
@@ -1369,15 +1313,6 @@
-
-
-
-
-
-
-
-
-
@@ -1385,20 +1320,91 @@
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java b/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java
index e6a77550517..1e27949f65d 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java
@@ -97,7 +97,7 @@ public final class StandardClasses {
declareJetObjects(standardClasses);
declareJavaUtilObjects(standardClasses);
declareTopLevelFunctions(standardClasses);
- declareJQuery(standardClasses);
+ // declareJQuery(standardClasses);
return standardClasses;
}
diff --git a/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java b/translator/src/org/jetbrains/k2js/translate/context/declaration/AbstractDeclarationVisitor.java
similarity index 74%
rename from translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java
rename to translator/src/org/jetbrains/k2js/translate/context/declaration/AbstractDeclarationVisitor.java
index 901b5b48680..7730ef3ab91 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/declaration/AbstractDeclarationVisitor.java
@@ -15,57 +15,76 @@ import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getOwnDeclarati
/**
* @author Pavel Talanov
*/
-public final class DeclarationVisitor extends DeclarationDescriptorVisitor {
+public abstract class AbstractDeclarationVisitor extends DeclarationDescriptorVisitor {
@NotNull
private final Declarations declarations;
- private final boolean shouldObfuscate;
- /*package*/ DeclarationVisitor(@NotNull Declarations declarations, boolean obfuscateNames) {
+ /*package*/ AbstractDeclarationVisitor(@NotNull Declarations declarations) {
this.declarations = declarations;
- this.shouldObfuscate = obfuscateNames;
}
+ abstract protected NamingScope doDeclareScope(@NotNull DeclarationDescriptor descriptor,
+ @NotNull DeclarationContext context,
+ @NotNull String recommendedName);
+
@NotNull
- private DeclarationContext declareClass(@NotNull ClassDescriptor descriptor,
- @NotNull DeclarationContext context) {
- NamingScope classScope = declareScope(descriptor, context, "class " + descriptor.getName());
- JsName className = declareName(descriptor, context);
- return context.innerDeclaration(classScope, className);
- }
+ abstract protected JsName doDeclareName(@NotNull DeclarationDescriptor descriptor,
+ @NotNull DeclarationContext context,
+ @NotNull String recommendedName);
- private NamingScope declareScope(@NotNull DeclarationDescriptor descriptor, @NotNull DeclarationContext context,
- @NotNull String scopeName) {
- NamingScope innerScope = context.getScope().innerScope(scopeName);
- declarations.putScope(descriptor, innerScope);
- return innerScope;
- }
+ abstract protected boolean accept(@NotNull DeclarationDescriptor descriptor);
@NotNull
- private JsName declareName(@NotNull DeclarationDescriptor descriptor, @NotNull DeclarationContext context,
- @NotNull String name) {
- JsName jsName = context.getScope().declareVariable(descriptor, name, shouldObfuscate);
- jsName.setObfuscatable(false);
- declarations.putName(descriptor, jsName);
- declarations.putQualifier(descriptor, context.getQualifier());
- return jsName;
+ protected Declarations declarations() {
+ return declarations;
}
- @NotNull
+ @Nullable
private JsName declareName(@NotNull DeclarationDescriptor descriptor,
@NotNull DeclarationContext context) {
return declareName(descriptor, context, descriptor.getName());
}
+ @Nullable
+ private JsName declareName(@NotNull DeclarationDescriptor descriptor,
+ @NotNull DeclarationContext context,
+ @NotNull String name) {
+ if (!accept(descriptor)) {
+ return null;
+ }
+ return doDeclareName(descriptor, context, name);
+ }
+
+ @Nullable
+ private NamingScope declareScope(@NotNull DeclarationDescriptor descriptor,
+ @NotNull DeclarationContext context,
+ @NotNull String name) {
+ if (!accept(descriptor)) {
+ return null;
+ }
+ return doDeclareScope(descriptor, context, name);
+ }
@Override
public Void visitClassDescriptor(@NotNull ClassDescriptor descriptor, @NotNull DeclarationContext context) {
+ if (!accept(descriptor)) {
+ return null;
+ }
DeclarationContext classContext = declareClass(descriptor, context);
declareClassConstructor(descriptor, context);
declareClassMembers(descriptor, classContext);
return null;
}
+ @NotNull
+ private DeclarationContext declareClass(@NotNull ClassDescriptor descriptor,
+ @NotNull DeclarationContext context) {
+ NamingScope classScope = doDeclareScope(descriptor, context, "class " + descriptor.getName());
+ JsName className = doDeclareName(descriptor, context, descriptor.getName());
+ return context.innerDeclaration(classScope, className);
+ }
+
private void declareClassMembers(@NotNull ClassDescriptor descriptor, @NotNull DeclarationContext context) {
for (DeclarationDescriptor memberDescriptor : getOwnDeclarations(descriptor)) {
memberDescriptor.accept(this, context);
@@ -81,6 +100,9 @@ public final class DeclarationVisitor extends DeclarationDescriptorVisitor