JS backend: remove ECMA 3, but several tests is broken.
Main reason: overload extention property: Int.bar = 1 String.bar = 2
This commit is contained in:
@@ -6,9 +6,9 @@
|
||||
<link rel="stylesheet" href="qunit.css">
|
||||
<script src="qunit.js"></script>
|
||||
|
||||
<script src="../testFiles/kotlin_lib_ecma3.js"></script>
|
||||
<script src="../testFiles/kotlin_lib_ecma5.js"></script>
|
||||
<script src="../testFiles/kotlin_lib.js"></script>
|
||||
<script src="../testFiles/kotlin-js-library/out/GenerateTestCase.compiler_v3.js"></script>
|
||||
<script src="../testFiles/kotlin-js-library/out/GenerateTestCase.compiler_v5.js"></script>
|
||||
|
||||
<script src="deepEqual.js"></script>
|
||||
<script src="swarminject.js"></script>
|
||||
|
||||
@@ -16,20 +16,13 @@
|
||||
|
||||
package org.jetbrains.k2js.config;
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public enum EcmaVersion {
|
||||
v3, v5;
|
||||
|
||||
@NotNull
|
||||
public static EcmaVersion fromString(@Nullable String target) {
|
||||
return StringUtil.compareVersionNumbers(target, "v5") >= 0 ? v5 : v3;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static EcmaVersion defaultVersion() {
|
||||
return v3;
|
||||
return v5;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,209 +0,0 @@
|
||||
/* Prototype JavaScript framework, version 1.6.1
|
||||
* (c) 2005-2009 Sam Stephenson
|
||||
*
|
||||
* Prototype is freely distributable under the terms of an MIT-style license.
|
||||
* For details, see the Prototype web site: http://www.prototypejs.org/
|
||||
*
|
||||
*--------------------------------------------------------------------------*/
|
||||
var Kotlin = {};
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
var emptyFunction = function () {
|
||||
};
|
||||
|
||||
if (!Array.isArray) {
|
||||
Array.isArray = function (vArg) {
|
||||
return Object.prototype.toString.call(vArg) === "[object Array]";
|
||||
};
|
||||
}
|
||||
|
||||
if (!Function.prototype.bind) {
|
||||
Function.prototype.bind = function (oThis) {
|
||||
if (typeof this !== "function") {
|
||||
// closest thing possible to the ECMAScript 5 internal IsCallable function
|
||||
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
|
||||
}
|
||||
|
||||
var aArgs = Array.prototype.slice.call(arguments, 1),
|
||||
fToBind = this,
|
||||
fNOP = function () {
|
||||
},
|
||||
fBound = function () {
|
||||
return fToBind.apply(this instanceof fNOP && oThis
|
||||
? this
|
||||
: oThis,
|
||||
aArgs.concat(Array.prototype.slice.call(arguments)));
|
||||
};
|
||||
|
||||
fNOP.prototype = this.prototype;
|
||||
fBound.prototype = new fNOP();
|
||||
|
||||
return fBound;
|
||||
};
|
||||
}
|
||||
|
||||
Kotlin.keys = Object.keys || function (o) {
|
||||
var result = [];
|
||||
var i = 0;
|
||||
for (var p in o) {
|
||||
if (o.hasOwnProperty(p)) {
|
||||
result[i++] = p;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
function copyProperties(to, from) {
|
||||
for (var p in from) {
|
||||
if (from.hasOwnProperty(p)) {
|
||||
to[p] = from[p];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Kotlin.isType = function (object, klass) {
|
||||
if (object === null || object === undefined) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var current = object.get_class();
|
||||
while (current !== klass) {
|
||||
if (current === null) {
|
||||
return false;
|
||||
}
|
||||
current = current.superclass;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
Kotlin.createTrait = function () {
|
||||
var n = arguments.length - 1;
|
||||
var result = arguments[n] || {};
|
||||
for (var i = 0; i < n; i++) {
|
||||
copyProperties(result, arguments[i]);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
Kotlin.definePackage = function (members) {
|
||||
return members === null ? {} : members;
|
||||
};
|
||||
|
||||
Kotlin.createClass = (function () {
|
||||
function subclass() {
|
||||
}
|
||||
|
||||
function create(parent, properties, staticProperties) {
|
||||
var traits = null;
|
||||
if (parent instanceof Array) {
|
||||
traits = parent;
|
||||
parent = parent[0];
|
||||
}
|
||||
|
||||
function klass() {
|
||||
this.initializing = klass;
|
||||
if (this.initialize) {
|
||||
this.initialize.apply(this, arguments);
|
||||
}
|
||||
}
|
||||
|
||||
klass.addMethods = addMethods;
|
||||
klass.superclass = parent || null;
|
||||
klass.subclasses = [];
|
||||
klass.object$ = object$;
|
||||
|
||||
if (parent) {
|
||||
if (typeof (parent) == "function") {
|
||||
subclass.prototype = parent.prototype;
|
||||
klass.prototype = new subclass();
|
||||
parent.subclasses.push(klass);
|
||||
}
|
||||
else {
|
||||
// trait
|
||||
klass.addMethods(parent);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}});
|
||||
}
|
||||
|
||||
if (traits !== null) {
|
||||
for (var i = 1, n = traits.length; i < n; i++) {
|
||||
klass.addMethods(traits[i]);
|
||||
}
|
||||
}
|
||||
if (properties !== null && properties !== undefined) {
|
||||
klass.addMethods(properties);
|
||||
}
|
||||
|
||||
if (!klass.prototype.initialize) {
|
||||
klass.prototype.initialize = emptyFunction;
|
||||
}
|
||||
|
||||
klass.prototype.constructor = klass;
|
||||
if (staticProperties !== null && staticProperties !== undefined) {
|
||||
copyProperties(klass, staticProperties);
|
||||
}
|
||||
return klass;
|
||||
}
|
||||
|
||||
function addMethods(source) {
|
||||
copyProperties(this.prototype, source);
|
||||
return this;
|
||||
}
|
||||
|
||||
function object$() {
|
||||
if (typeof this.$object$ === "undefined") {
|
||||
this.$object$ = this.object_initializer$();
|
||||
}
|
||||
|
||||
return this.$object$;
|
||||
}
|
||||
|
||||
return create;
|
||||
})();
|
||||
|
||||
Kotlin.$createClass = function (parent, properties) {
|
||||
if (parent !== null && typeof (parent) != "function") {
|
||||
properties = parent;
|
||||
parent = null;
|
||||
}
|
||||
return Kotlin.createClass(parent, properties, null);
|
||||
};
|
||||
|
||||
Kotlin.createObjectWithPrototype = function (prototype) {
|
||||
function C() {}
|
||||
C.prototype = prototype;
|
||||
return new C();
|
||||
};
|
||||
|
||||
Kotlin.$new = function (f) {
|
||||
var o = Kotlin.createObjectWithPrototype(f.prototype);
|
||||
return function () {
|
||||
f.apply(o, arguments);
|
||||
return o;
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.createObject = function () {
|
||||
var singletonClass = Kotlin.createClass.apply(null, arguments);
|
||||
return new singletonClass();
|
||||
};
|
||||
|
||||
Kotlin.defineModule = function (id, module) {
|
||||
if (id in Kotlin.modules) {
|
||||
throw Kotlin.$new(Kotlin.IllegalArgumentException)();
|
||||
}
|
||||
|
||||
Kotlin.modules[id] = module;
|
||||
};
|
||||
})();
|
||||
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
fun Int.foo() {}
|
||||
fun String.foo() {}
|
||||
|
||||
val Int.bar = 1
|
||||
val String.bar = 2
|
||||
|
||||
fun box(): String {
|
||||
val a = 43
|
||||
if (a.bar != 1) return "a.bar != 1, it: ${a.bar}"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package foo
|
||||
|
||||
class A {
|
||||
fun test(a: Int) {}
|
||||
fun test() {}
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user