fix cosmetic TODOs

add short class comments where meaningful
This commit is contained in:
Pavel Talanov
2012-02-05 16:33:47 +04:00
parent 2f5baf8934
commit f5dd688746
21 changed files with 68 additions and 23 deletions
@@ -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 {
@@ -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 {
@@ -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 {
@@ -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
*/ */