Add "use strict" to generated test files and to kotlin_lib.js

This commit is contained in:
pTalanov
2012-03-06 19:52:14 +04:00
parent c794da3c55
commit e890cc7750
4 changed files with 120 additions and 107 deletions
@@ -22,8 +22,11 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.k2js.facade.K2JSTranslator;
import org.jetbrains.k2js.generate.CodeGenerator;
import org.jetbrains.k2js.test.config.TestConfig;
import java.io.File;
import java.io.FileWriter;
import java.util.Collections;
import java.util.List;
@@ -49,7 +52,13 @@ public final class TranslationUtils {
@NotNull String outputFile) throws Exception {
List<JetFile> psiFiles = createPsiFileList(inputFiles, project);
JsProgram program = getTranslator(project).generateProgram(psiFiles);
K2JSTranslator.saveProgramToFile(outputFile, program);
FileWriter writer = new FileWriter(new File(outputFile));
try {
writer.write("\"use strict\"\n;");
writer.write(CodeGenerator.toString(program));
} finally {
writer.close();
}
}
@NotNull
@@ -33,7 +33,6 @@ import org.jetbrains.k2js.utils.JetFileUtils;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -59,7 +58,7 @@ public final class K2JSTranslator {
if (fileWithMain == null) {
throw new RuntimeException("No file with main detected.");
}
String callToMain = translator.generateCallToMain(fileWithMain, "");
String callToMain = generateCallToMain(fileWithMain, "");
FileWriter writer = new FileWriter(new File(outputPath));
try {
writer.write(programCode + callToMain);
@@ -68,11 +67,6 @@ public final class K2JSTranslator {
}
}
public static void saveProgramToFile(@NotNull String outputFile, @NotNull JsProgram program) throws IOException {
CodeGenerator generator = new CodeGenerator();
generator.generateToFile(program, new File(outputFile));
}
@NotNull
private final Config config;
@@ -37,6 +37,16 @@ public final class CodeGenerator {
public CodeGenerator() {
}
public static void toFile(@NotNull String outputFile, @NotNull JsProgram program) throws IOException {
CodeGenerator generator = new CodeGenerator();
generator.generateToFile(program, new File(outputFile));
}
@NotNull
public static String toString(@NotNull JsProgram program) {
return (new CodeGenerator()).generateToString(program);
}
public void generateToFile(@NotNull JsProgram program, @NotNull File file) throws IOException {
generateCode(program);
FileWriter writer = new FileWriter(file);
+99 -99
View File
@@ -21,8 +21,9 @@
* For details, see the Prototype web site: http://www.prototypejs.org/
*
*--------------------------------------------------------------------------*/
var Kotlin;
(function () {
"use strict";
function $A(iterable) {
if (!iterable) return [];
if ('toArray' in Object(iterable)) return iterable.toArray();
@@ -82,8 +83,8 @@
function argumentNames() {
var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]
.replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
.replace(/\s+/g, '').split(',');
.replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
.replace(/\s+/g, '').split(',');
return names.length == 1 && !names[0] ? [] : names;
}
@@ -93,7 +94,7 @@
return function () {
var a = merge(args, arguments);
return __method.apply(context, a);
}
};
}
function bindAsEventListener(context) {
@@ -101,7 +102,7 @@
return function (event) {
var a = update([event || window.event], args);
return __method.apply(context, a);
}
};
}
function wrap(wrapper) {
@@ -109,7 +110,7 @@
return function () {
var a = update([__method.bind(this)], arguments);
return wrapper.apply(this, a);
}
};
}
return {
@@ -117,11 +118,11 @@
bind:bind,
bindAsEventListener:bindAsEventListener,
wrap:wrap
}
};
})());
var isType = function (object, klass) {
current = object.get_class();
var current = object.get_class();
while (current !== klass) {
if (current === null) {
return false;
@@ -138,7 +139,7 @@
function subclass() {
}
;
function create() {
var parent = null, properties = $A(arguments);
if (typeof (properties[0]) == "function") {
@@ -156,25 +157,25 @@
if (parent) {
subclass.prototype = parent.prototype;
klass.prototype = new subclass;
klass.prototype = new subclass();
parent.subclasses.push(klass);
}
klass.addMethods(
{
get_class:function () {
return klass;
}
});
if (parent != null) {
klass.addMethods(
{
super_init:function () {
this.initializing = this.initializing.superclass;
this.initializing.prototype.initialize.apply(this, arguments)
get_class:function () {
return klass;
}
});
if (parent !== null) {
klass.addMethods(
{
super_init:function () {
this.initializing = this.initializing.superclass;
this.initializing.prototype.initialize.apply(this, arguments);
}
});
}
for (var i = 0, length = properties.length; i < length; i++)
@@ -190,7 +191,7 @@
function addMethods(source) {
var ancestor = this.superclass && this.superclass.prototype,
properties = Object.keys(source);
properties = Object.keys(source);
for (var i = 0, length = properties.length; i < length; i++) {
@@ -233,7 +234,7 @@
function create() {
result = {}
var result = {};
for (var i = 0, length = arguments.length; i < length; i++) {
add(result, arguments[i]);
}
@@ -260,8 +261,9 @@
var object = (function () {
function create() {
var singletonClass = Class.create.apply(Class, arguments);
return new singletonClass;
return new singletonClass();
}
return {
create:create
};
@@ -276,16 +278,16 @@
Kotlin.equals = function (obj1, obj2) {
if (typeof obj1 == "object") {
if (obj1.equals != undefined) {
if (obj1.equals !== undefined) {
return obj1.equals(obj2);
}
}
return (obj1 === obj2);
};
Kotlin.Exceptions = {}
Kotlin.Exceptions = {};
Kotlin.Exception = Kotlin.Class.create();
Kotlin.Exceptions.IndexOutOfBounds = {}
Kotlin.Exceptions.IndexOutOfBounds = {};
Kotlin.ArrayList = Class.create({
@@ -312,7 +314,7 @@
return new Kotlin.ArrayIterator(this);
},
isEmpty:function () {
return (this.$size == 0);
return (this.$size === 0);
},
add:function (element) {
this.array[this.$size++] = element;
@@ -345,9 +347,9 @@
Kotlin.parseInt =
function (str) {
return parseInt(str);
}
function (str) {
return parseInt(str, 10);
}
;
Kotlin.System = function () {
@@ -355,7 +357,7 @@
var print = function (obj) {
if (obj !== undefined) {
if (obj == null || typeof obj != "object") {
if (obj === null || typeof obj !== "object") {
output += obj;
}
else {
@@ -386,11 +388,11 @@
Kotlin.println = function (s) {
Kotlin.System.out().println(s);
}
};
Kotlin.print = function (s) {
Kotlin.System.out().print(s);
}
};
Kotlin.AbstractFunctionInvokationError = Class.create();
@@ -481,18 +483,18 @@
});
Kotlin.Comparator = Kotlin.Class.create(
{
initialize:function () {
},
compare:function (el1, el2) {
throw new Kotlin.AbstractFunctionInvokationError();
{
initialize:function () {
},
compare:function (el1, el2) {
throw new Kotlin.AbstractFunctionInvokationError();
}
}
}
);
Kotlin.comparator = function(f) {
var result = new Kotlin.Comparator;
result.compare = function(el1, el2) {
Kotlin.comparator = function (f) {
var result = new Kotlin.Comparator();
result.compare = function (el1, el2) {
return f(el1, el2);
};
return result;
@@ -515,20 +517,20 @@
};
Kotlin.StringBuilder = Kotlin.Class.create(
{
initialize:function () {
this.string = "";
},
append:function (obj) {
this.string = this.string + obj.toString();
},
toString:function () {
return this.string;
{
initialize:function () {
this.string = "";
},
append:function (obj) {
this.string = this.string + obj.toString();
},
toString:function () {
return this.string;
}
}
}
);
Kotlin.splitString = function(str, regex) {
Kotlin.splitString = function (str, regex) {
return str.split(regex);
};
@@ -555,23 +557,23 @@
};
var intrinsicArrayIterator = Kotlin.Class.create(
Kotlin.Iterator,
{
initialize:function (arr) {
this.arr = arr;
this.len = arr.length;
this.i = 0;
},
hasNext:function () {
return (this.i < this.len);
},
next:function () {
return this.arr[this.i++];
},
get_hasNext:function () {
return this.hasNext()
Kotlin.Iterator,
{
initialize:function (arr) {
this.arr = arr;
this.len = arr.length;
this.i = 0;
},
hasNext:function () {
return (this.i < this.len);
},
next:function () {
return this.arr[this.i++];
},
get_hasNext:function () {
return this.hasNext();
}
}
}
);
Kotlin.arrayIterator = function (arr) {
@@ -601,7 +603,7 @@
};
Kotlin.sure = function(obj) {
Kotlin.sure = function (obj) {
return obj;
};
@@ -609,23 +611,23 @@
var FUNCTION = "function";
var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ?
function (arr, idx) {
arr.splice(idx, 1);
} :
function (arr, idx) {
arr.splice(idx, 1);
} :
function (arr, idx) {
var itemsAfterDeleted, i, len;
if (idx === arr.length - 1) {
arr.length = idx;
}
else {
itemsAfterDeleted = arr.slice(idx + 1);
arr.length = idx;
for (i = 0, len = itemsAfterDeleted.length; i < len; ++i) {
arr[idx + i] = itemsAfterDeleted[i];
function (arr, idx) {
var itemsAfterDeleted, i, len;
if (idx === arr.length - 1) {
arr.length = idx;
}
}
};
else {
itemsAfterDeleted = arr.slice(idx + 1);
arr.length = idx;
for (i = 0, len = itemsAfterDeleted.length; i < len; ++i) {
arr[idx + i] = itemsAfterDeleted[i];
}
}
};
function hashObject(obj) {
var hashCode;
@@ -655,7 +657,7 @@
function equals_fixedValueNoEquals(fixedValue, variableValue) {
return (typeof variableValue.equals == FUNCTION) ?
variableValue.equals(fixedValue) : (fixedValue === variableValue);
variableValue.equals(fixedValue) : (fixedValue === variableValue);
}
function createKeyValCheck(kvStr) {
@@ -957,23 +959,21 @@
res.add(keys[i]);
}
return res;
}
};
};
Kotlin.HashTable = Hashtable;
})();
Kotlin.HashMap = Kotlin.Class.create(
{
initialize:function () {
Kotlin.HashTable.call(this);
{
initialize:function () {
Kotlin.HashTable.call(this);
}
}
}
);
(function () {
function HashSet(hashingFunction, equalityFunction) {
var hashTable = new Kotlin.HashTable(hashingFunction, equalityFunction);
@@ -1065,12 +1065,12 @@
}
Kotlin.HashSet = Kotlin.Class.create(
{
initialize:function () {
HashSet.call(this);
{
initialize:function () {
HashSet.call(this);
}
}
}
)
);
}());
})();