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
|
||||
* <p/>
|
||||
* Base class reprenting a configuration of translator.
|
||||
*/
|
||||
public abstract class Config {
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.k2js.analyze.Analyzer;
|
||||
import org.jetbrains.k2js.config.Config;
|
||||
@@ -25,12 +24,15 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import static org.jetbrains.k2js.translate.utils.PsiUtils.getNamespaceName;
|
||||
import static org.jetbrains.k2js.utils.JetFileUtils.createPsiFileList;
|
||||
|
||||
//TODO: clean up the code
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* An entry point of translator.
|
||||
*/
|
||||
public final class K2JSTranslator {
|
||||
|
||||
@@ -104,7 +106,7 @@ public final class K2JSTranslator {
|
||||
|
||||
@NotNull
|
||||
public String generateCallToMain(@NotNull JetFile file, @NotNull String argumentString) {
|
||||
String namespaceName = getRootNamespaceName(file);
|
||||
String namespaceName = getNamespaceName(file);
|
||||
List<String> arguments = parseString(argumentString);
|
||||
return GenerationUtils.generateCallToMain(namespaceName, arguments);
|
||||
}
|
||||
@@ -119,17 +121,6 @@ public final class K2JSTranslator {
|
||||
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
|
||||
private Project getProject() {
|
||||
|
||||
@@ -11,6 +11,8 @@ import java.io.StringWriter;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Represents an applet API for WebDemo module.
|
||||
*/
|
||||
public final class K2JSTranslatorApplet extends Applet {
|
||||
|
||||
|
||||
@@ -8,8 +8,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Encapuslates different types of constants and naming conventions.
|
||||
*/
|
||||
|
||||
public final class Namer {
|
||||
|
||||
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 SUPER_METHOD_NAME = "super_init";
|
||||
private static final String KOTLIN_OBJECT_NAME = "Kotlin";
|
||||
private static final String ANONYMOUS_NAMESPACE = "Anonymous";
|
||||
|
||||
@NotNull
|
||||
public static String getAnonymousNamespaceName() {
|
||||
return ANONYMOUS_NAMESPACE;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef initializeMethodReference() {
|
||||
|
||||
@@ -6,6 +6,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Basically a wrapper around JsScope.
|
||||
*/
|
||||
public final class NamingScope {
|
||||
|
||||
@@ -39,6 +41,11 @@ public final class NamingScope {
|
||||
return declaredName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
/*package*/ JsName declareObfuscatableName(@NotNull String name) {
|
||||
return scope.declareName(mayBeObfuscateName(name, true));
|
||||
}
|
||||
|
||||
//TODO: temporary solution
|
||||
@NotNull
|
||||
private String mayBeObfuscateName(@NotNull String name, boolean shouldObfuscate) {
|
||||
@@ -64,11 +71,6 @@ public final class NamingScope {
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
/*package*/ JsName declareObfuscatableName(@NotNull String name) {
|
||||
return scope.declareName(mayBeObfuscateName(name, true));
|
||||
}
|
||||
|
||||
public JsName declareTemporary() {
|
||||
return scope.declareTemporary();
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@ import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFQName;
|
||||
|
||||
/**
|
||||
* @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 {
|
||||
|
||||
|
||||
@@ -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.DescriptorUtils.*;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Aggregates all the static parts of the context.
|
||||
*/
|
||||
public class StaticContext {
|
||||
|
||||
public static StaticContext generateStaticContext(@NotNull JetStandardLibrary library,
|
||||
|
||||
@@ -12,6 +12,8 @@ import static org.jetbrains.k2js.translate.utils.BindingUtils.getDescriptorForEl
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* All the info about the state of the translation process.
|
||||
*/
|
||||
public final class TranslationContext {
|
||||
|
||||
|
||||
+2
@@ -24,6 +24,8 @@ import static org.jetbrains.k2js.translate.utils.BindingUtils.getDeclarationsFor
|
||||
|
||||
/**
|
||||
* @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
|
||||
public final class ClassDeclarationTranslator extends AbstractTranslator {
|
||||
|
||||
@@ -22,6 +22,8 @@ import static org.jetbrains.k2js.translate.utils.PsiUtils.getPrimaryConstructorP
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Generates a definition of a single class.
|
||||
*/
|
||||
public final class ClassTranslator extends AbstractTranslator {
|
||||
|
||||
|
||||
@@ -14,9 +14,9 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* @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 {
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -22,6 +22,8 @@ import static org.jetbrains.k2js.translate.utils.TranslationUtils.*;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Translates single property /w accessors.
|
||||
*/
|
||||
public final class PropertyTranslator extends AbstractTranslator {
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Base class for all intrinsics.
|
||||
*/
|
||||
public interface Intrinsic {
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getPropertyByNa
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* Provides mechanism to substitute method calls /w native constucts directly.
|
||||
*/
|
||||
public final class Intrinsics {
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import org.jetbrains.k2js.translate.general.AbstractTranslator;
|
||||
|
||||
/**
|
||||
* @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 {
|
||||
|
||||
|
||||
+2
@@ -15,6 +15,8 @@ import static org.jetbrains.k2js.translate.utils.TranslationUtils.backingFieldRe
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* For properies /w accessors.
|
||||
*/
|
||||
public final class KotlinPropertyAccessTranslator extends PropertyAccessTranslator {
|
||||
|
||||
|
||||
+2
@@ -14,6 +14,8 @@ import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getExpectedThis
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
* <p/>
|
||||
* For native apis that use .property notation for access.
|
||||
*/
|
||||
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.receivers.ReceiverDescriptor;
|
||||
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
||||
import org.jetbrains.k2js.translate.context.Namer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -125,12 +126,11 @@ public final class DescriptorUtils {
|
||||
return (functionDescriptor.getReceiverParameter().exists());
|
||||
}
|
||||
|
||||
//TODO: make "anonymous" a constant
|
||||
@NotNull
|
||||
public static String getNameForNamespace(@NotNull NamespaceDescriptor descriptor) {
|
||||
String name = descriptor.getName();
|
||||
if (name.equals("")) {
|
||||
return "Anonymous";
|
||||
return Namer.getAnonymousNamespaceName();
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lexer.JetToken;
|
||||
import org.jetbrains.jet.lexer.JetTokens;
|
||||
import org.jetbrains.k2js.translate.context.Namer;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -116,6 +117,16 @@ public final class PsiUtils {
|
||||
assert parent instanceof JetObjectDeclaration :
|
||||
"ObjectDeclarationName should have a parent of type ObjectDeclaration.";
|
||||
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
|
||||
* <p/>
|
||||
* Some util class for WebDemo module.
|
||||
*/
|
||||
public final class ErrorSender {
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
//TODO: very thin class
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user