fix cosmetic TODOs
add short class comments where meaningful
This commit is contained in:
@@ -15,6 +15,8 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Base class reprenting a configuration of translator.
|
||||||
*/
|
*/
|
||||||
public abstract class Config {
|
public abstract class Config {
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.intellij.openapi.project.Project;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.k2js.analyze.Analyzer;
|
import org.jetbrains.k2js.analyze.Analyzer;
|
||||||
import org.jetbrains.k2js.config.Config;
|
import org.jetbrains.k2js.config.Config;
|
||||||
@@ -25,12 +24,15 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
|
import static org.jetbrains.k2js.translate.utils.PsiUtils.getNamespaceName;
|
||||||
import static org.jetbrains.k2js.utils.JetFileUtils.createPsiFileList;
|
import static org.jetbrains.k2js.utils.JetFileUtils.createPsiFileList;
|
||||||
|
|
||||||
//TODO: clean up the code
|
//TODO: clean up the code
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* An entry point of translator.
|
||||||
*/
|
*/
|
||||||
public final class K2JSTranslator {
|
public final class K2JSTranslator {
|
||||||
|
|
||||||
@@ -104,7 +106,7 @@ public final class K2JSTranslator {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public String generateCallToMain(@NotNull JetFile file, @NotNull String argumentString) {
|
public String generateCallToMain(@NotNull JetFile file, @NotNull String argumentString) {
|
||||||
String namespaceName = getRootNamespaceName(file);
|
String namespaceName = getNamespaceName(file);
|
||||||
List<String> arguments = parseString(argumentString);
|
List<String> arguments = parseString(argumentString);
|
||||||
return GenerationUtils.generateCallToMain(namespaceName, arguments);
|
return GenerationUtils.generateCallToMain(namespaceName, arguments);
|
||||||
}
|
}
|
||||||
@@ -119,17 +121,6 @@ public final class K2JSTranslator {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private String getRootNamespaceName(@NotNull JetFile psiFile) {
|
|
||||||
JetNamespaceHeader namespaceHeader = psiFile.getNamespaceHeader();
|
|
||||||
String name = namespaceHeader.getName();
|
|
||||||
assert name != null : "NamespaceHeader must have a name";
|
|
||||||
//TODO: encapsulate anonymous logic somewhere
|
|
||||||
if (name.equals("")) {
|
|
||||||
return "Anonymous";
|
|
||||||
}
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private Project getProject() {
|
private Project getProject() {
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import java.io.StringWriter;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Represents an applet API for WebDemo module.
|
||||||
*/
|
*/
|
||||||
public final class K2JSTranslatorApplet extends Applet {
|
public final class K2JSTranslatorApplet extends Applet {
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,9 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Encapuslates different types of constants and naming conventions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public final class Namer {
|
public final class Namer {
|
||||||
|
|
||||||
private static final String INITIALIZE_METHOD_NAME = "initialize";
|
private static final String INITIALIZE_METHOD_NAME = "initialize";
|
||||||
@@ -22,6 +23,12 @@ public final class Namer {
|
|||||||
private static final String BACKING_FIELD_PREFIX = "$";
|
private static final String BACKING_FIELD_PREFIX = "$";
|
||||||
private static final String SUPER_METHOD_NAME = "super_init";
|
private static final String SUPER_METHOD_NAME = "super_init";
|
||||||
private static final String KOTLIN_OBJECT_NAME = "Kotlin";
|
private static final String KOTLIN_OBJECT_NAME = "Kotlin";
|
||||||
|
private static final String ANONYMOUS_NAMESPACE = "Anonymous";
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static String getAnonymousNamespaceName() {
|
||||||
|
return ANONYMOUS_NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static JsNameRef initializeMethodReference() {
|
public static JsNameRef initializeMethodReference() {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Basically a wrapper around JsScope.
|
||||||
*/
|
*/
|
||||||
public final class NamingScope {
|
public final class NamingScope {
|
||||||
|
|
||||||
@@ -39,6 +41,11 @@ public final class NamingScope {
|
|||||||
return declaredName;
|
return declaredName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
/*package*/ JsName declareObfuscatableName(@NotNull String name) {
|
||||||
|
return scope.declareName(mayBeObfuscateName(name, true));
|
||||||
|
}
|
||||||
|
|
||||||
//TODO: temporary solution
|
//TODO: temporary solution
|
||||||
@NotNull
|
@NotNull
|
||||||
private String mayBeObfuscateName(@NotNull String name, boolean shouldObfuscate) {
|
private String mayBeObfuscateName(@NotNull String name, boolean shouldObfuscate) {
|
||||||
@@ -64,11 +71,6 @@ public final class NamingScope {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
/*package*/ JsName declareObfuscatableName(@NotNull String name) {
|
|
||||||
return scope.declareName(mayBeObfuscateName(name, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
public JsName declareTemporary() {
|
public JsName declareTemporary() {
|
||||||
return scope.declareTemporary();
|
return scope.declareTemporary();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFQName;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Provides a mechanism to bind some of the kotlin/java declations with library implementations.
|
||||||
|
* Makes sense only for those declaration that cannot be annotated. (Use library annotation in this case)
|
||||||
*/
|
*/
|
||||||
public final class StandardClasses {
|
public final class StandardClasses {
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,11 @@ import org.jetbrains.k2js.translate.utils.AnnotationsUtils;
|
|||||||
import static org.jetbrains.k2js.translate.utils.AnnotationsUtils.*;
|
import static org.jetbrains.k2js.translate.utils.AnnotationsUtils.*;
|
||||||
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.*;
|
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Aggregates all the static parts of the context.
|
||||||
|
*/
|
||||||
public class StaticContext {
|
public class StaticContext {
|
||||||
|
|
||||||
public static StaticContext generateStaticContext(@NotNull JetStandardLibrary library,
|
public static StaticContext generateStaticContext(@NotNull JetStandardLibrary library,
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import static org.jetbrains.k2js.translate.utils.BindingUtils.getDescriptorForEl
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* All the info about the state of the translation process.
|
||||||
*/
|
*/
|
||||||
public final class TranslationContext {
|
public final class TranslationContext {
|
||||||
|
|
||||||
|
|||||||
+2
@@ -24,6 +24,8 @@ import static org.jetbrains.k2js.translate.utils.BindingUtils.getDeclarationsFor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Generates a big block where are all the classes(objects representing them) are created.
|
||||||
*/
|
*/
|
||||||
//TODO: declaration translator receives NamespaceDescriptor while actually should receive all declarations in namespace
|
//TODO: declaration translator receives NamespaceDescriptor while actually should receive all declarations in namespace
|
||||||
public final class ClassDeclarationTranslator extends AbstractTranslator {
|
public final class ClassDeclarationTranslator extends AbstractTranslator {
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ import static org.jetbrains.k2js.translate.utils.PsiUtils.getPrimaryConstructorP
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Generates a definition of a single class.
|
||||||
*/
|
*/
|
||||||
public final class ClassTranslator extends AbstractTranslator {
|
public final class ClassTranslator extends AbstractTranslator {
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel.Talanov
|
* @author Pavel.Talanov
|
||||||
|
* <p/>
|
||||||
|
* Translates single namespace.
|
||||||
*/
|
*/
|
||||||
//TODO: rework translator to translateAsLocalNameReference everything in the namespace not only in one file
|
|
||||||
// TEST IT
|
|
||||||
public final class NamespaceTranslator extends AbstractTranslator {
|
public final class NamespaceTranslator extends AbstractTranslator {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ import static org.jetbrains.k2js.translate.utils.TranslationUtils.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Translates single property /w accessors.
|
||||||
*/
|
*/
|
||||||
public final class PropertyTranslator extends AbstractTranslator {
|
public final class PropertyTranslator extends AbstractTranslator {
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Base class for all intrinsics.
|
||||||
*/
|
*/
|
||||||
public interface Intrinsic {
|
public interface Intrinsic {
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getPropertyByNa
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Provides mechanism to substitute method calls /w native constucts directly.
|
||||||
*/
|
*/
|
||||||
public final class Intrinsics {
|
public final class Intrinsics {
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import org.jetbrains.k2js.translate.general.AbstractTranslator;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Abstract entity for language constructs that you can get/set. Also dispatches to the real implemntation.
|
||||||
*/
|
*/
|
||||||
public abstract class AccessTranslator extends AbstractTranslator {
|
public abstract class AccessTranslator extends AbstractTranslator {
|
||||||
|
|
||||||
|
|||||||
+2
@@ -15,6 +15,8 @@ import static org.jetbrains.k2js.translate.utils.TranslationUtils.backingFieldRe
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* For properies /w accessors.
|
||||||
*/
|
*/
|
||||||
public final class KotlinPropertyAccessTranslator extends PropertyAccessTranslator {
|
public final class KotlinPropertyAccessTranslator extends PropertyAccessTranslator {
|
||||||
|
|
||||||
|
|||||||
+2
@@ -14,6 +14,8 @@ import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getExpectedThis
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* For native apis that use .property notation for access.
|
||||||
*/
|
*/
|
||||||
public final class NativePropertyAccessTranslator extends PropertyAccessTranslator {
|
public final class NativePropertyAccessTranslator extends PropertyAccessTranslator {
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.jetbrains.jet.lang.descriptors.*;
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
||||||
|
import org.jetbrains.k2js.translate.context.Namer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -125,12 +126,11 @@ public final class DescriptorUtils {
|
|||||||
return (functionDescriptor.getReceiverParameter().exists());
|
return (functionDescriptor.getReceiverParameter().exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: make "anonymous" a constant
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static String getNameForNamespace(@NotNull NamespaceDescriptor descriptor) {
|
public static String getNameForNamespace(@NotNull NamespaceDescriptor descriptor) {
|
||||||
String name = descriptor.getName();
|
String name = descriptor.getName();
|
||||||
if (name.equals("")) {
|
if (name.equals("")) {
|
||||||
return "Anonymous";
|
return Namer.getAnonymousNamespaceName();
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lexer.JetToken;
|
import org.jetbrains.jet.lexer.JetToken;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
import org.jetbrains.k2js.translate.context.Namer;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -116,6 +117,16 @@ public final class PsiUtils {
|
|||||||
assert parent instanceof JetObjectDeclaration :
|
assert parent instanceof JetObjectDeclaration :
|
||||||
"ObjectDeclarationName should have a parent of type ObjectDeclaration.";
|
"ObjectDeclarationName should have a parent of type ObjectDeclaration.";
|
||||||
return (JetObjectDeclaration) parent;
|
return (JetObjectDeclaration) parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static String getNamespaceName(@NotNull JetFile psiFile) {
|
||||||
|
JetNamespaceHeader namespaceHeader = psiFile.getNamespaceHeader();
|
||||||
|
String name = namespaceHeader.getName();
|
||||||
|
assert name != null : "NamespaceHeader must have a name";
|
||||||
|
if (name.equals("")) {
|
||||||
|
return Namer.getAnonymousNamespaceName();
|
||||||
|
}
|
||||||
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import java.net.URL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
|
* <p/>
|
||||||
|
* Some util class for WebDemo module.
|
||||||
*/
|
*/
|
||||||
public final class ErrorSender {
|
public final class ErrorSender {
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
//TODO: very thin class
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user