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
* <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 {
@@ -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 {
@@ -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 {
@@ -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
*/