diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 279bf7ef194..4afb69675d7 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -6,58 +6,34 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -136,9 +112,36 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -151,86 +154,53 @@
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -239,30 +209,46 @@
-
-
+
+
-
+
-
-
+
+
-
-
-
-
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -277,26 +263,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -304,8 +272,8 @@
-
-
+
+
@@ -313,19 +281,19 @@
-
-
+
+
-
+
-
-
+
+
-
+
@@ -341,28 +309,33 @@
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -405,6 +378,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -454,6 +443,10 @@
+
+
+
+
@@ -521,24 +514,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -659,22 +634,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -690,9 +649,9 @@
-
-
+
+
@@ -707,6 +666,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -777,54 +784,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -900,11 +859,11 @@
-
-
-
-
-
+
+
+
+
+
localhost
@@ -944,23 +903,23 @@
-
-
+
-
+
-
+
-
+
+
@@ -971,8 +930,8 @@
-
-
+
+
@@ -994,11 +953,11 @@
-
+
-
+
-
+
@@ -1019,6 +978,8 @@
+
+
@@ -1028,122 +989,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
diff --git a/translator/src/org/jetbrains/k2js/K2JSTranslator.java b/translator/src/org/jetbrains/k2js/K2JSTranslator.java
index c3c9b4db882..537706a44d4 100644
--- a/translator/src/org/jetbrains/k2js/K2JSTranslator.java
+++ b/translator/src/org/jetbrains/k2js/K2JSTranslator.java
@@ -12,8 +12,6 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.sampullara.cli.Argument;
-import org.jetbrains.k2js.generate.CodeGenerator;
-import org.jetbrains.k2js.translate.GenerationState;
import org.jetbrains.jet.JetCoreEnvironment;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
@@ -25,6 +23,8 @@ import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.JavaDefaultImports;
+import org.jetbrains.k2js.generate.CodeGenerator;
+import org.jetbrains.k2js.translate.GenerationState;
import java.io.File;
import java.io.IOException;
@@ -75,16 +75,16 @@ public class K2JSTranslator {
Project project = environment.getProject();
GenerationState generationState = new GenerationState();
List namespaces = Lists.newArrayList();
- if(vFile.isDirectory()) {
+ if (vFile.isDirectory()) {
File dir = new File(vFile.getPath());
addFiles(environment, project, namespaces, dir);
- }
- else {
+ } else {
PsiFile psiFile = PsiManager.getInstance(project).findFile(vFile);
if (psiFile instanceof JetFile) {
- namespaces.add(((JetFile) psiFile).getRootNamespace());
- }
- else {
+ JetNamespace rootNamespace = ((JetFile) psiFile).getRootNamespace();
+ AnalyzingUtils.checkForSyntacticErrors(rootNamespace);
+ namespaces.add(rootNamespace);
+ } else {
System.out.print("Not a Kotlin file: " + vFile.getPath());
return;
}
@@ -93,6 +93,8 @@ public class K2JSTranslator {
BindingContext bindingContext = AnalyzingUtils.getInstance(JavaDefaultImports.JAVA_DEFAULT_IMPORTS)
.analyzeNamespaces(project, namespaces, Predicates.alwaysTrue(), JetControlFlowDataTraceFactory.EMPTY);
+ AnalyzingUtils.throwExceptionOnErrors(bindingContext);
+
ErrorCollector errorCollector = new ErrorCollector(bindingContext);
errorCollector.report();
@@ -106,8 +108,7 @@ public class K2JSTranslator {
File outputFile = new File(arguments.outputDir);
try {
generator.generateToFile(program, outputFile);
- }
- catch (IOException e) {
+ } catch (IOException e) {
System.out.println("Failed to write to specified file");
}
}
@@ -116,7 +117,7 @@ public class K2JSTranslator {
}
private static class ErrorCollector {
- Multimap maps = LinkedHashMultimap.create();
+ Multimap maps = LinkedHashMultimap.create();
boolean hasErrors;
@@ -128,17 +129,16 @@ public class K2JSTranslator {
private void report(Diagnostic diagnostic) {
hasErrors |= diagnostic.getSeverity() == Severity.ERROR;
- if(diagnostic instanceof DiagnosticWithTextRange) {
+ if (diagnostic instanceof DiagnosticWithTextRange) {
DiagnosticWithTextRange diagnosticWithTextRange = (DiagnosticWithTextRange) diagnostic;
maps.put(diagnosticWithTextRange.getPsiFile(), diagnosticWithTextRange);
- }
- else {
+ } else {
System.out.println(diagnostic.getSeverity().toString() + ": " + diagnostic.getMessage());
}
}
void report() {
- if(!maps.isEmpty()) {
+ if (!maps.isEmpty()) {
for (PsiFile psiFile : maps.keySet()) {
System.out.println(psiFile.getVirtualFile().getPath());
Collection diagnosticWithTextRanges = maps.get(psiFile);
@@ -152,15 +152,14 @@ public class K2JSTranslator {
}
private static void addFiles(JavaCoreEnvironment environment, Project project, List namespaces, File dir) {
- for(File file : dir.listFiles()) {
- if(!file.isDirectory()) {
+ for (File file : dir.listFiles()) {
+ if (!file.isDirectory()) {
VirtualFile virtualFile = environment.getLocalFileSystem().findFileByPath(file.getAbsolutePath());
PsiFile psiFile = PsiManager.getInstance(project).findFile(virtualFile);
if (psiFile instanceof JetFile) {
namespaces.add(((JetFile) psiFile).getRootNamespace());
}
- }
- else {
+ } else {
addFiles(environment, project, namespaces, file);
}
}
@@ -171,15 +170,15 @@ public class K2JSTranslator {
File rtJar = null;
if (javaHome == null) {
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
- if(systemClassLoader instanceof URLClassLoader) {
+ if (systemClassLoader instanceof URLClassLoader) {
URLClassLoader loader = (URLClassLoader) systemClassLoader;
- for(URL url: loader.getURLs()) {
- if("file".equals(url.getProtocol())) {
- if(url.getFile().endsWith("/lib/rt.jar")) {
+ for (URL url : loader.getURLs()) {
+ if ("file".equals(url.getProtocol())) {
+ if (url.getFile().endsWith("/lib/rt.jar")) {
rtJar = new File(url.getFile());
break;
}
- if(url.getFile().endsWith("/Classes/classes.jar")) {
+ if (url.getFile().endsWith("/Classes/classes.jar")) {
rtJar = new File(url.getFile()).getAbsoluteFile();
break;
}
@@ -187,12 +186,11 @@ public class K2JSTranslator {
}
}
- if(rtJar == null) {
+ if (rtJar == null) {
System.out.println("JAVA_HOME environment variable needs to be defined");
return null;
}
- }
- else {
+ } else {
rtJar = findRtJar(javaHome);
}
diff --git a/translator/src/org/jetbrains/k2js/declarations/DeclarationExtractor.java b/translator/src/org/jetbrains/k2js/declarations/DeclarationExtractor.java
index 492f80c6fd2..c9d9dd2c13c 100644
--- a/translator/src/org/jetbrains/k2js/declarations/DeclarationExtractor.java
+++ b/translator/src/org/jetbrains/k2js/declarations/DeclarationExtractor.java
@@ -45,6 +45,6 @@ public final class DeclarationExtractor {
}
/*package*/ void putName(@NotNull DeclarationDescriptor descriptor, @NotNull JsName name) {
- descriptorToNameMap.put(descriptor, name);
+ descriptorToNameMap.put(descriptor, name);
}
}
diff --git a/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java b/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java
index 4c6fce68b65..02880fa7949 100644
--- a/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java
+++ b/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java
@@ -2,7 +2,6 @@ package org.jetbrains.k2js.declarations;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsScope;
-import com.intellij.util.xml.PropertyAccessor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
@@ -13,7 +12,8 @@ import org.jetbrains.k2js.translate.Namer;
*/
public final class ExtractionVisitor extends DeclarationDescriptorVisitor {
- @NotNull private final DeclarationExtractor extractor;
+ @NotNull
+ private final DeclarationExtractor extractor;
/*package*/ ExtractionVisitor(@NotNull DeclarationExtractor extractor) {
this.extractor = extractor;
diff --git a/translator/src/org/jetbrains/k2js/generate/CodeGenerator.java b/translator/src/org/jetbrains/k2js/generate/CodeGenerator.java
index c85b2e2f915..c950ae8b234 100644
--- a/translator/src/org/jetbrains/k2js/generate/CodeGenerator.java
+++ b/translator/src/org/jetbrains/k2js/generate/CodeGenerator.java
@@ -34,7 +34,7 @@ public final class CodeGenerator {
private void generateCode(JsProgram program) {
JsSourceGenerationVisitor sourceGenerator =
- new JsSourceGenerationVisitor(output);
+ new JsSourceGenerationVisitor(output);
program.traverse(sourceGenerator, null);
}
}
diff --git a/translator/src/org/jetbrains/k2js/translate/AbstractTranslator.java b/translator/src/org/jetbrains/k2js/translate/AbstractTranslator.java
index b04d9830938..6072b4c4b23 100644
--- a/translator/src/org/jetbrains/k2js/translate/AbstractTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/AbstractTranslator.java
@@ -10,7 +10,8 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
*/
public abstract class AbstractTranslator {
- @NotNull private final TranslationContext context;
+ @NotNull
+ private final TranslationContext context;
public AbstractTranslator(@NotNull TranslationContext context) {
this.context = context;
diff --git a/translator/src/org/jetbrains/k2js/translate/BindingUtils.java b/translator/src/org/jetbrains/k2js/translate/BindingUtils.java
index 3721fe9d336..0933e7f2c2e 100644
--- a/translator/src/org/jetbrains/k2js/translate/BindingUtils.java
+++ b/translator/src/org/jetbrains/k2js/translate/BindingUtils.java
@@ -13,11 +13,12 @@ import java.util.List;
/**
* @author Talanov Pavel
- *
- * This class contains some code related to BindingContext use. Intention is not to pollute other classes.
+ *
+ * This class contains some code related to BindingContext use. Intention is not to pollute other classes.
*/
public final class BindingUtils {
- private BindingUtils() {}
+ private BindingUtils() {
+ }
@NotNull
@@ -27,7 +28,7 @@ public final class BindingUtils {
assert descriptor != null;
assert descriptorClass.isInstance(descriptor)
: expression.toString() + " expected to have of type" + descriptorClass.toString();
- return (D)descriptor;
+ return (D) descriptor;
}
@NotNull
@@ -68,7 +69,7 @@ public final class BindingUtils {
@NotNull
static public PropertySetterDescriptor getPropertySetterDescriptorForProperty(@NotNull BindingContext context,
- @NotNull JetProperty property) {
+ @NotNull JetProperty property) {
PropertySetterDescriptor result = getPropertyDescriptor(context, property).getSetter();
assert result != null : "Property should have a setter descriptor";
return result;
@@ -76,7 +77,7 @@ public final class BindingUtils {
@NotNull
static public PropertyGetterDescriptor getPropertyGetterDescriptorForProperty(@NotNull BindingContext context,
- @NotNull JetProperty property) {
+ @NotNull JetProperty property) {
PropertyGetterDescriptor result = getPropertyDescriptor(context, property).getGetter();
assert result != null : "Property should have a getter descriptor";
return result;
@@ -84,17 +85,17 @@ public final class BindingUtils {
@NotNull
static public List getSuperclassDescriptors(@NotNull BindingContext context,
- @NotNull JetClass classDeclaration) {
+ @NotNull JetClass classDeclaration) {
ClassDescriptor classDescriptor = getClassDescriptor(context, classDeclaration);
Collection extends JetType> superclassTypes = classDescriptor.getTypeConstructor().getSupertypes();
List superClassDescriptors = new ArrayList();
for (JetType type : superclassTypes) {
DeclarationDescriptor superClassDescriptor =
- type.getConstructor().getDeclarationDescriptor();
+ type.getConstructor().getDeclarationDescriptor();
assert superClassDescriptor instanceof ClassDescriptor
- : "Superclass descriptor of a type should be of type ClassDescriptor";
+ : "Superclass descriptor of a type should be of type ClassDescriptor";
if (isNotAny(superClassDescriptor)) {
- superClassDescriptors.add((ClassDescriptor)superClassDescriptor);
+ superClassDescriptors.add((ClassDescriptor) superClassDescriptor);
}
}
return superClassDescriptors;
@@ -102,7 +103,7 @@ public final class BindingUtils {
//TODO better implementation?
private static boolean isNotAny(@NotNull DeclarationDescriptor superClassDescriptor) {
- return superClassDescriptor.getName() != "Any";
+ return !superClassDescriptor.getName().equals("Any");
}
}
diff --git a/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java b/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java
index 4f7fa13970e..34062c741b9 100644
--- a/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java
@@ -82,7 +82,7 @@ public final class ClassBodyVisitor extends TranslatorVisitor(), AstUtil.convertToBlock(returnExpression));
+ (context.enclosingScope(), null, new ArrayList(), AstUtil.convertToBlock(returnExpression));
}
@NotNull
@@ -91,7 +91,7 @@ public final class ClassBodyVisitor extends TranslatorVisitor getSuperclassNameReferences(@NotNull JetClass classDeclaration) {
List superclassReferences = new ArrayList();
for (ClassDescriptor superClassDescriptor :
- BindingUtils.getSuperclassDescriptors(translationContext().bindingContext(), classDeclaration)) {
+ BindingUtils.getSuperclassDescriptors(translationContext().bindingContext(), classDeclaration)) {
//TODO should get a full class name here
superclassReferences.add(translationContext().getNamespaceQualifiedReference
(translationContext().getNameForDescriptor(superClassDescriptor)));
diff --git a/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java b/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java
index 908464413bd..9d3b20e114f 100644
--- a/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java
@@ -21,6 +21,4 @@ public final class DeclarationTranslator extends AbstractTranslator {
}
-
-
}
diff --git a/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java b/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java
index 56f18f43bcf..74d647db902 100644
--- a/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java
@@ -6,9 +6,7 @@ import com.google.dart.compiler.backend.js.ast.JsNameRef;
import com.google.dart.compiler.backend.js.ast.JsStatement;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetClass;
-import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetProperty;
@@ -27,25 +25,12 @@ public class DeclarationVisitor extends TranslatorVisitor {
JsExpression result;
if (jsInitExpression != null) {
result = AstUtil.newAssignment(jsPropertyNameReference, jsInitExpression);
- }
- else {
+ } else {
result = jsPropertyNameReference;
}
return AstUtil.convertToStatement(result);
}
- //TODO duplicate code translateInitializer 1
- @Nullable
- private JsExpression translateInitializer(@NotNull JetProperty declaration, @NotNull TranslationContext context) {
- JsExpression jsInitExpression = null;
- JetExpression initializer = declaration.getInitializer();
- if (initializer != null) {
- jsInitExpression = AstUtil.convertToExpression(
- (new ExpressionTranslator(context)).translate(initializer));
- }
- return jsInitExpression;
- }
-
@NotNull
@Override
public JsStatement visitClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
diff --git a/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java b/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java
index 934f33ebce6..6bbf698f72a 100644
--- a/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java
@@ -9,7 +9,7 @@ import org.jetbrains.jet.lang.psi.JetExpression;
*/
public final class ExpressionTranslator extends AbstractTranslator {
- final private ExpressionVisitor visitor = new ExpressionVisitor(translationContext());
+ final private ExpressionVisitor visitor = new ExpressionVisitor();
public ExpressionTranslator(@NotNull TranslationContext context) {
super(context);
diff --git a/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java b/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java
index 758f82c2103..345ed389dee 100644
--- a/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java
@@ -1,21 +1,15 @@
package org.jetbrains.k2js.translate;
-import com.google.dart.compiler.backend.js.ast.JsBlock;
-import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.*;
-import com.google.dart.compiler.backend.js.ast.JsReturn;
import com.google.dart.compiler.util.AstUtil;
-import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
-import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
-import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
@@ -28,39 +22,33 @@ import java.util.List;
*/
public final class ExpressionVisitor extends TranslatorVisitor {
- public ExpressionVisitor(TranslationContext context) {
- }
-
- //TODO method too long
@Override
@NotNull
- public JsNode visitConstantExpression(@NotNull JetConstantExpression expression, @NotNull TranslationContext context) {
- JsExpression result = null;
- Object value;
+ public JsNode visitConstantExpression(@NotNull JetConstantExpression expression,
+ @NotNull TranslationContext context) {
CompileTimeConstant> compileTimeValue =
context.bindingContext().get(BindingContext.COMPILE_TIME_VALUE, expression);
assert compileTimeValue != null;
- value = compileTimeValue.getValue();
+ Object value = compileTimeValue.getValue();
if (value instanceof Integer) {
- result = context.program().getNumberLiteral((Integer) value);
+ return context.program().getNumberLiteral((Integer) value);
}
if (value instanceof Boolean) {
return context.program().getBooleanLiteral((Boolean) value);
}
- assert result != null;
- return result;
+ throw new AssertionError("Unsupported constant expression" + expression.toString());
}
@Override
@NotNull
public JsNode visitBlockExpression(@NotNull JetBlockExpression jetBlock, @NotNull TranslationContext context) {
- List jetElements = jetBlock.getStatements();
+ List statements = jetBlock.getStatements();
JsBlock jsBlock = new JsBlock();
TranslationContext newContext = context.newBlock();
- for (JetElement jetElement : jetElements) {
- //TODO hack alert
- JetExpression jetExpression = (JetExpression) jetElement;
- JsNode jsNode = jetExpression.accept(this, newContext);
+ for (JetElement statement : statements) {
+ assert statement instanceof JetExpression : "Elements in JetBlockExpression " +
+ "should be of type JetExpression";
+ JsNode jsNode = statement.accept(this, newContext);
jsBlock.addStatement(AstUtil.convertToStatement(jsNode));
}
return jsBlock;
@@ -100,10 +88,11 @@ public final class ExpressionVisitor extends TranslatorVisitor {
return translateAsBinaryOperation(expression, context);
}
+ //TODO method too long
@Nullable
public JsInvocation translateAsSetterCall(@NotNull JetBinaryExpression expression,
@NotNull TranslationContext context) {
- JetToken jetOperationToken = (JetToken)expression.getOperationToken();
+ JetToken jetOperationToken = (JetToken) expression.getOperationToken();
if (!OperationTranslator.isAssignment(jetOperationToken)) {
return null;
}
@@ -124,16 +113,17 @@ public final class ExpressionVisitor extends TranslatorVisitor {
private JsNode translateAsBinaryOperation(@NotNull JetBinaryExpression expression, @NotNull TranslationContext context) {
JsExpression left = AstUtil.convertToExpression(expression.getLeft().accept(this, context));
JetExpression rightExpression = expression.getRight();
- assert rightExpression != null : "Selector should not be null";
+ assert rightExpression != null : "Binary expression should have a right exprssion";
JsExpression right = AstUtil.convertToExpression(rightExpression.accept(this, context));
- JetToken jetOperationToken = (JetToken)expression.getOperationToken();
+ JetToken jetOperationToken = (JetToken) expression.getOperationToken();
return new JsBinaryOperation(OperationTranslator.getBinaryOperator(jetOperationToken), left, right);
}
- //TODO clearify code
+ //TODO support other cases
@Override
@NotNull
- public JsNode visitSimpleNameExpression(JetSimpleNameExpression expression, TranslationContext context) {
+ public JsNode visitSimpleNameExpression(@NotNull JetSimpleNameExpression expression,
+ @NotNull TranslationContext context) {
String referencedName = expression.getReferencedName();
JsName jsName = context.enclosingScope().findExistingName(referencedName);
assert jsName != null : "Undeclared name: " + referencedName;
@@ -150,31 +140,17 @@ public final class ExpressionVisitor extends TranslatorVisitor {
@Override
@NotNull
// assume it is a local variable declaration
- public JsNode visitProperty(JetProperty expression, TranslationContext context) {
- JsName jsPropertyName = context.declareLocalName(getPropertyName(expression));
- JsExpression jsInitExpression = translateInitializer(expression, context);
- return AstUtil.newVar(jsPropertyName, jsInitExpression);
+ public JsNode visitProperty(@NotNull JetProperty expression, @NotNull TranslationContext context) {
+ JsName jsPropertyName = context.declareLocalName(getPropertyName(expression));
+ JsExpression jsInitExpression = translateInitializer(expression, context);
+ return AstUtil.newVar(jsPropertyName, jsInitExpression);
}
- //TODO duplicate code translateInitializer 2
- @Nullable
- private JsExpression translateInitializer(JetProperty declaration, TranslationContext context) {
- JsExpression jsInitExpression = null;
- JetExpression initializer = declaration.getInitializer();
- if (initializer != null) {
- jsInitExpression = AstUtil.convertToExpression(
- (new ExpressionTranslator(context)).translate(initializer));
- }
- return jsInitExpression;
- }
-
-
@Override
@NotNull
public JsNode visitCallExpression(JetCallExpression expression, TranslationContext context) {
JsExpression callee = getCallee(expression, context);
List arguments = generateArgumentList(expression.getValueArguments(), context);
-
if (isConstructorInvocation(expression, context)) {
JsNew constructorCall = new JsNew(callee);
constructorCall.setArguments(arguments);
@@ -288,7 +264,7 @@ public final class ExpressionVisitor extends TranslatorVisitor {
@Override
@NotNull
public JsNode visitStringTemplateExpression(@NotNull JetStringTemplateExpression expression,
- @NotNull TranslationContext context) {
+ @NotNull TranslationContext context) {
JsStringLiteral stringLiteral = resolveAsStringConstant(expression, context);
if (stringLiteral != null) {
return stringLiteral;
@@ -298,13 +274,13 @@ public final class ExpressionVisitor extends TranslatorVisitor {
@Nullable
private JsStringLiteral resolveAsStringConstant(@NotNull JetStringTemplateExpression expression,
- @NotNull TranslationContext context) {
+ @NotNull TranslationContext context) {
CompileTimeConstant> compileTimeValue =
context.bindingContext().get(BindingContext.COMPILE_TIME_VALUE, expression);
if (compileTimeValue != null) {
Object value = compileTimeValue.getValue();
assert value instanceof String : "Compile time constant template should be a String constant.";
- String constantString = (String)value;
+ String constantString = (String) value;
return context.program().getStringLiteral(constantString);
}
return null;
@@ -314,7 +290,7 @@ public final class ExpressionVisitor extends TranslatorVisitor {
@Override
@NotNull
public JsNode visitDotQualifiedExpression(@NotNull JetDotQualifiedExpression expression,
- @NotNull TranslationContext context) {
+ @NotNull TranslationContext context) {
JsInvocation getterCall = translateAsGetterCall(expression, context);
if (getterCall != null) {
return getterCall;
@@ -349,18 +325,16 @@ public final class ExpressionVisitor extends TranslatorVisitor {
@NotNull
private JsNode translateAsQualifiedNameReference(@NotNull JsExpression receiver, @NotNull JsNameRef selector) {
- JsNameRef result = (JsNameRef)selector;
- result.setQualifier(receiver);
- return result;
+ selector.setQualifier(receiver);
+ return selector;
}
@NotNull
private JsNode translateAsQualifiedInvocation(@NotNull JsExpression receiver, @NotNull JsInvocation selector) {
- JsInvocation result = (JsInvocation)selector;
- JsExpression qualifier = result.getQualifier();
- JsNameRef nameRef = (JsNameRef)qualifier;
+ JsExpression qualifier = selector.getQualifier();
+ JsNameRef nameRef = (JsNameRef) qualifier;
nameRef.setQualifier(receiver);
- return result;
+ return selector;
}
diff --git a/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java b/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java
index afd83519cc1..9a5d76c6d12 100644
--- a/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java
@@ -3,14 +3,11 @@ package org.jetbrains.k2js.translate;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
import com.sun.istack.internal.NotNull;
-import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetParameter;
-import org.jetbrains.jet.lang.resolve.BindingContext;
-import javax.xml.ws.Binding;
import java.util.ArrayList;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/GenerationState.java b/translator/src/org/jetbrains/k2js/translate/GenerationState.java
index 1e7d89bc9a3..3d6ddf0fc34 100644
--- a/translator/src/org/jetbrains/k2js/translate/GenerationState.java
+++ b/translator/src/org/jetbrains/k2js/translate/GenerationState.java
@@ -4,21 +4,11 @@
package org.jetbrains.k2js.translate;
import com.google.dart.compiler.backend.js.ast.JsProgram;
-import com.intellij.openapi.project.Project;
-import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
-import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
-import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamespace;
-import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.BindingContext;
-import org.jetbrains.jet.lang.resolve.java.JavaDefaultImports;
import org.jetbrains.k2js.declarations.DeclarationExtractor;
-import javax.print.attribute.standard.MediaSize;
-import javax.xml.ws.Binding;
-import java.beans.beancontext.BeanContext;
-import java.util.Collections;
import java.util.List;
public final class GenerationState {
@@ -41,5 +31,4 @@ public final class GenerationState {
}
-
}
diff --git a/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java b/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java
index 6a0d125d675..c68778b1026 100644
--- a/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java
@@ -11,15 +11,18 @@ import java.util.List;
/**
* @author Talanov Pavel
- *
- * This visitor collects all initializers from a given class into JsFunction object.
- * Note: we do use visitor pattern to preserve the order in which initializers are executed.
+ *
+ * This visitor collects all initializers from a given class into JsFunction object.
+ * Note: we do use visitor pattern to preserve the order in which initializers are executed.
*/
public class InitializerVisitor extends TranslatorVisitor> {
- @NotNull private final JsScope initializerMethodScope;
- @NotNull private final JetClass classDeclaration;
- @NotNull private final TranslationContext initializerMethodContext;
+ @NotNull
+ private final JsScope initializerMethodScope;
+ @NotNull
+ private final JetClass classDeclaration;
+ @NotNull
+ private final TranslationContext initializerMethodContext;
public InitializerVisitor(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
this.initializerMethodScope = new JsScope(context.getScopeForElement(classDeclaration),
@@ -81,7 +84,7 @@ public class InitializerVisitor extends TranslatorVisitor> {
@NotNull
JsStatement assignmentToBackingField(@NotNull JetProperty property, @NotNull JsExpression initExpression,
- @NotNull TranslationContext context) {
+ @NotNull TranslationContext context) {
String propertyName = property.getName();
assert propertyName != null : "Named property expected.";
JsName backingFieldName = getBackingFieldName(propertyName, context);
diff --git a/translator/src/org/jetbrains/k2js/translate/Namer.java b/translator/src/org/jetbrains/k2js/translate/Namer.java
index cee2c5eb0f7..f2e1ce99d50 100644
--- a/translator/src/org/jetbrains/k2js/translate/Namer.java
+++ b/translator/src/org/jetbrains/k2js/translate/Namer.java
@@ -2,7 +2,6 @@ package org.jetbrains.k2js.translate;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import com.google.dart.compiler.util.AstUtil;
-import org.jetbrains.jet.lang.psi.JetPropertyAccessor;
/**
* @author Talanov Pavel
@@ -23,7 +22,7 @@ public final class Namer {
private static final String SETTER_PREFIX = "set_";
private static final String GETTER_PREFIX = "get_";
private static final String BACKING_FIELD_PREFIX = "$";
- // public static final String DEFAULT_SETTER_PARAM_NAME = "val";
+ // public static final String DEFAULT_SETTER_PARAM_NAME = "val";
public static String getClassObjectName() {
//TODO dummy representation
@@ -33,8 +32,7 @@ public final class Namer {
public static String getNameForAccessor(String propertyName, boolean isGetter) {
if (isGetter) {
return getNameForGetter(propertyName);
- }
- else {
+ } else {
return getNameForSetter(propertyName);
}
}
@@ -69,5 +67,4 @@ public final class Namer {
}
-
}
diff --git a/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java b/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java
index e8c79d15cf6..43d846e8468 100644
--- a/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java
@@ -55,7 +55,7 @@ public final class NamespaceTranslator extends AbstractTranslator {
@NotNull
private JsInvocation newNamespace(@NotNull JsName name, @NotNull JsBlock namespaceDeclarations,
- @NotNull JsFunction dummyFunction) {
+ @NotNull JsFunction dummyFunction) {
List params = new ArrayList();
params.add(new JsParameter(name));
dummyFunction.setParameters(params);
diff --git a/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java b/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java
index 5251729f9e2..64c20676240 100644
--- a/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java
@@ -35,7 +35,7 @@ public final class OperationTranslator {
assert JetTokens.OPERATIONS.contains(token) : "Token should represent a binary operation!";
JsOperator result = map.get(token);
if (result instanceof JsBinaryOperator) {
- return (JsBinaryOperator)result;
+ return (JsBinaryOperator) result;
}
throw new AssertionError("Invalid map: should contain token: " + token.toString());
}
diff --git a/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java b/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java
index bf8049a1457..5371702c124 100644
--- a/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java
@@ -1,6 +1,9 @@
package org.jetbrains.k2js.translate;
-import com.google.dart.compiler.backend.js.ast.*;
+import com.google.dart.compiler.backend.js.ast.JsInvocation;
+import com.google.dart.compiler.backend.js.ast.JsName;
+import com.google.dart.compiler.backend.js.ast.JsNameRef;
+import com.google.dart.compiler.backend.js.ast.JsNode;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -29,7 +32,7 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
assert selectorExpression != null : "Selector should not be null.";
JsName getterName = getPropertyGetterName(selectorExpression);
if (getterName == null) {
- return null;
+ return null;
}
return translateReceiverAndReturnAccessorInvocation(expression, getterName);
}
@@ -49,12 +52,12 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
if (!(expression instanceof JetDotQualifiedExpression)) {
return null;
}
- JetDotQualifiedExpression dotQualifiedExpression = (JetDotQualifiedExpression)expression;
+ JetDotQualifiedExpression dotQualifiedExpression = (JetDotQualifiedExpression) expression;
JetExpression selectorExpression = dotQualifiedExpression.getSelectorExpression();
assert selectorExpression != null : "Selector should not be null.";
JsName getterName = getPropertySetterName(selectorExpression);
if (getterName == null) {
- return null;
+ return null;
}
return translateReceiverAndReturnAccessorInvocation(dotQualifiedExpression, getterName);
}
@@ -92,7 +95,7 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
if (resolvedCall != null) {
DeclarationDescriptor descriptor = resolvedCall.getCandidateDescriptor();
if (descriptor instanceof PropertyDescriptor) {
- return (PropertyDescriptor)descriptor;
+ return (PropertyDescriptor) descriptor;
}
}
return null;
diff --git a/translator/src/org/jetbrains/k2js/translate/TranslationContext.java b/translator/src/org/jetbrains/k2js/translate/TranslationContext.java
index cb6be7beac3..7ae20bc999b 100644
--- a/translator/src/org/jetbrains/k2js/translate/TranslationContext.java
+++ b/translator/src/org/jetbrains/k2js/translate/TranslationContext.java
@@ -1,6 +1,9 @@
package org.jetbrains.k2js.translate;
-import com.google.dart.compiler.backend.js.ast.*;
+import com.google.dart.compiler.backend.js.ast.JsName;
+import com.google.dart.compiler.backend.js.ast.JsNameRef;
+import com.google.dart.compiler.backend.js.ast.JsProgram;
+import com.google.dart.compiler.backend.js.ast.JsScope;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -22,9 +25,12 @@ public final class TranslationContext {
this.namespaceScope = namespaceScope;
}
- @NotNull public final JsScope enclosingScope;
- @NotNull public final JsScope classScope;
- @NotNull public final JsScope namespaceScope;
+ @NotNull
+ public final JsScope enclosingScope;
+ @NotNull
+ public final JsScope classScope;
+ @NotNull
+ public final JsScope namespaceScope;
}
@NotNull
@@ -35,12 +41,16 @@ public final class TranslationContext {
return new TranslationContext(null, program, bindingContext, scopes, extractor);
}
- @NotNull private final JsProgram program;
- @NotNull private final BindingContext bindingContext;
- @NotNull private final Scopes scopes;
- @Nullable private final JsName namespaceName;
- @NotNull private final DeclarationExtractor extractor;
-
+ @NotNull
+ private final JsProgram program;
+ @NotNull
+ private final BindingContext bindingContext;
+ @NotNull
+ private final Scopes scopes;
+ @Nullable
+ private final JsName namespaceName;
+ @NotNull
+ private final DeclarationExtractor extractor;
private TranslationContext(@Nullable JsName namespaceName, @NotNull JsProgram program,
@@ -115,7 +125,6 @@ public final class TranslationContext {
}
-
@NotNull
public JsNameRef getNamespaceQualifiedReference(JsName name) {
if (namespaceName != null) {
@@ -170,7 +179,8 @@ public final class TranslationContext {
return extractor.getName(descriptor);
}
- @NotNull JsName getNameForElement(@NotNull JetElement element) {
+ @NotNull
+ JsName getNameForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = getDescriptorForElement(element);
return getNameForDescriptor(descriptor);
}
diff --git a/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java b/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java
index 18c98ddcff7..37d10b76a15 100644
--- a/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java
@@ -1,15 +1,19 @@
package org.jetbrains.k2js.translate;
+import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.JsName;
+import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetElement;
+import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.JetVisitor;
/**
* @author Talanov Pavel
- *
- * This class is a base class for all visitors. It contains code that is shared among them.
+ *
+ * This class is a base class for all visitors. It contains code that is shared among them.
*/
public class TranslatorVisitor extends JetVisitor {
@@ -33,4 +37,16 @@ public class TranslatorVisitor extends JetVisitor {
String backingFieldName = Namer.getKotlinBackingFieldName(propertyName);
return context.enclosingScope().findExistingName(backingFieldName);
}
+
+
+ @Nullable
+ protected JsExpression translateInitializer(@NotNull JetProperty declaration, @NotNull TranslationContext context) {
+ JsExpression jsInitExpression = null;
+ JetExpression initializer = declaration.getInitializer();
+ if (initializer != null) {
+ jsInitExpression = AstUtil.convertToExpression(
+ (new ExpressionTranslator(context)).translate(initializer));
+ }
+ return jsInitExpression;
+ }
}
diff --git a/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java b/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java
index a5820a0a674..046bd0460b4 100644
--- a/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java
+++ b/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java
@@ -1,8 +1,5 @@
package org.jetbrains.k2js.test;
-import org.jetbrains.k2js.translate.TranslationContext;
-import org.junit.BeforeClass;
-import org.junit.Test;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
@@ -17,7 +14,7 @@ public abstract class AbstractClassTest extends TranslationTest {
private final String KOTLIN_JS_LIB = TEST_FILES + "kotlin_lib.js";
- protected String kotlinLibrartyPath() {
+ protected String kotlinLibraryPath() {
return KOTLIN_JS_LIB;
}
@@ -29,13 +26,13 @@ public abstract class AbstractClassTest extends TranslationTest {
@Override
protected void runWithRhino(String inputFile, String namespaceName,
- String functionName, Object expectedResult) throws Exception {
+ String functionName, Object expectedResult) throws Exception {
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects();
- runFileWithRhino(kotlinLibrartyPath(), cx, scope);
+ runFileWithRhino(kotlinLibraryPath(), cx, scope);
runFileWithRhino(inputFile, cx, scope);
Object result = extractAndCallFunctionObject(namespaceName, functionName, cx, scope);
- assertTrue("Result is not what expected!",result.equals(expectedResult));
+ assertTrue("Result is not what expected!", result.equals(expectedResult));
String report = namespaceName + "." + functionName + "() = " + Context.toString(result);
System.out.println(report);
Context.exit();
diff --git a/translator/test/org/jetbrains/k2js/test/BasicClassTest.java b/translator/test/org/jetbrains/k2js/test/BasicClassTest.java
index 28a8fd4ef98..aa6f71a6617 100644
--- a/translator/test/org/jetbrains/k2js/test/BasicClassTest.java
+++ b/translator/test/org/jetbrains/k2js/test/BasicClassTest.java
@@ -20,7 +20,7 @@ public class BasicClassTest extends AbstractClassTest {
public void kotlinJsLibRunsWithRhino() throws Exception {
Context context = Context.enter();
Scriptable scope = context.initStandardObjects();
- runFileWithRhino(kotlinLibrartyPath(), context, scope);
+ runFileWithRhino(kotlinLibraryPath(), context, scope);
Context.exit();
}
diff --git a/translator/test/org/jetbrains/k2js/test/FunctionTest.java b/translator/test/org/jetbrains/k2js/test/FunctionTest.java
index 88b2a6e56e3..0b63cd8ef8e 100644
--- a/translator/test/org/jetbrains/k2js/test/FunctionTest.java
+++ b/translator/test/org/jetbrains/k2js/test/FunctionTest.java
@@ -1,14 +1,12 @@
package org.jetbrains.k2js.test;
-import org.junit.BeforeClass;
import org.junit.Test;
-import org.kohsuke.rngom.digested.Main;
/**
* @author Talanov Pavel
- *
- * This class tests basic language features and constructs such as constants, local variables, simple loops,
- * conditional clauses etc.
+ *
+ * This class tests basic language features and constructs such as constants, local variables, simple loops,
+ * conditional clauses etc.
*/
public final class FunctionTest extends TranslationTest {
diff --git a/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java b/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java
index 5691ff42d20..fb5f56c4341 100644
--- a/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java
+++ b/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java
@@ -39,4 +39,10 @@ public final class PropertyAccessorTest extends AbstractClassTest {
testFooBoxIsTrue("customSetter.kt");
}
+ //TODO test
+// @Test
+// public void namespaceCustomAccessors() throws Exception {
+// testFooBoxIsTrue("namespaceCustomAccessors.kt");
+// }
+
}
diff --git a/translator/test/org/jetbrains/k2js/test/TranslationTest.java b/translator/test/org/jetbrains/k2js/test/TranslationTest.java
index db6c22c973b..aef48ffbac1 100644
--- a/translator/test/org/jetbrains/k2js/test/TranslationTest.java
+++ b/translator/test/org/jetbrains/k2js/test/TranslationTest.java
@@ -2,14 +2,14 @@ package org.jetbrains.k2js.test;
import org.jetbrains.k2js.K2JSTranslator;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.NativeObject;
import org.mozilla.javascript.Scriptable;
import java.io.FileReader;
-import static org.junit.Assert.*;
+
+import static org.junit.Assert.assertTrue;
/**
@@ -43,7 +43,7 @@ public abstract class TranslationTest {
}
protected void performTest(String filename, String namespaceName,
- String functionName, Object expectedResult) throws Exception {
+ String functionName, Object expectedResult) throws Exception {
K2JSTranslator.Arguments args = new K2JSTranslator.Arguments();
args.src = getInputFilePath(filename);
args.outputDir = getOutputFilePath(filename);
@@ -64,7 +64,7 @@ public abstract class TranslationTest {
}
protected void runWithRhino(String inputFile, String namespaceName,
- String functionName, Object expectedResult) throws Exception {
+ String functionName, Object expectedResult) throws Exception {
Context cx = Context.enter();
FileReader reader = new FileReader(inputFile);
try {
@@ -82,14 +82,14 @@ public abstract class TranslationTest {
}
protected Object extractAndCallFunctionObject(String namespaceName, String functionName,
- Context cx, Scriptable scope) {
+ Context cx, Scriptable scope) {
Object foo = scope.get(namespaceName, scope);
assertTrue(foo instanceof NativeObject);
- NativeObject namespaceObject = (NativeObject)foo;
+ NativeObject namespaceObject = (NativeObject) foo;
Object box = namespaceObject.get(functionName, namespaceObject);
assertTrue(box instanceof Function);
Object functionArgs[] = {};
- Function function = (Function)box;
+ Function function = (Function) box;
return function.call(cx, scope, scope, functionArgs);
}
diff --git a/translator/testFiles/propertyAccess/cases/namespaceCustomAccessors.kt b/translator/testFiles/propertyAccess/cases/namespaceCustomAccessors.kt
new file mode 100644
index 00000000000..2804b0773fb
--- /dev/null
+++ b/translator/testFiles/propertyAccess/cases/namespaceCustomAccessors.kt
@@ -0,0 +1,17 @@
+namespace foo
+
+var a : Int
+get() {
+ return 5
+}
+set(b) {
+
+}
+
+{
+ $a = 3;
+}
+
+fun box() : Boolean {
+ return (a == 5)
+}
\ No newline at end of file
diff --git a/translator/testFiles/propertyAccess/cases/twoClassesWithProperties.kt b/translator/testFiles/propertyAccess/cases/twoClassesWithProperties.kt
index 7c6a8f57da0..e5f56b95528 100644
--- a/translator/testFiles/propertyAccess/cases/twoClassesWithProperties.kt
+++ b/translator/testFiles/propertyAccess/cases/twoClassesWithProperties.kt
@@ -9,5 +9,5 @@ class B() {
}
fun box() : Boolean {
- return ((A().a == 1) && (B().b == 2);
+ return ((A().a == 1) && (B().b == 2));
}
\ No newline at end of file