8037572: Add more test cases to check static types
Reviewed-by: attila, lagergren
This commit is contained in:
parent
2f01820f6d
commit
31c5e7065a
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8036987, 8037572
|
||||
* @summary Implement tests that checks static types in the compiled code
|
||||
* @run
|
||||
*/
|
||||
|
||||
var inspect = Java.type("jdk.nashorn.test.tools.StaticTypeInspector").inspect
|
||||
var a = 3, b, c;
|
||||
var x = { a: 2, b:1, c: 7, d: -1}
|
||||
var y = { a: Number.MAX_VALUE, b: Number.POSITIVE_INFINITY, c: "Hello", d: undefined}
|
||||
|
||||
// Testing arithmetic operators
|
||||
//-- Local variable
|
||||
print(inspect(x.a*x.b, "local int multiplication by local int"))
|
||||
print(inspect(x.a/x.b, "local int division by local int without remainder"))
|
||||
print(inspect(x.c/x.a, "local int division by local int with remainder"))
|
||||
print(inspect(x.c%x.a, "local int modulo by local int"))
|
||||
print(inspect(x.a+x.b, "local int addition local int"))
|
||||
print(inspect(x.a-x.b, "local int substraction local int"))
|
||||
print(inspect(y.a*y.a, "max value multiplication by max value"))
|
||||
print(inspect(y.b*y.b, "infinity multiplication by infinity"))
|
||||
print(inspect(x.d/y.b, "-1 division by infinity"))
|
||||
print(inspect(y.b/x.e, "infinity division by zero"))
|
||||
print(inspect(y.b/y.c, "infinity division by String"))
|
||||
print(inspect(y.d/y.d, "local undefined division by local undefined"))
|
||||
print(inspect(y.d*y.d, "local undefined multiplication by local undefined"))
|
||||
print(inspect(y.d+x.a, "local undefined addition local int"))
|
||||
print(inspect(y.d--, "local undefined decrement postfix"))
|
||||
print(inspect(--y.d, "local undefined decrement prefix"))
|
||||
print(inspect(x.a++, "local int increment postfix"))
|
||||
print(inspect(++x.a, "local int increment prefix"))
|
||||
print(inspect(x.a--, "local int decrement postfix"))
|
||||
print(inspect(--x.a, "local int decrement prefix"))
|
||||
print(inspect(+x.a, "local int unary plus"))
|
||||
print(inspect(-x.a, "local int unary minus"))
|
||||
//-- Global variable
|
||||
print(inspect(b*c, "undefined multiplication by undefined"))
|
||||
print(inspect(b/c, "undefined division by undefined"))
|
||||
print(inspect(a+a, "global int addition global int"))
|
||||
print(inspect(a-a, "global int substraction global int"))
|
||||
print(inspect(a*a, "global int multiplication by global int"))
|
||||
print(inspect(a++, "global int increment postfix"))
|
||||
print(inspect(++a, "global int increment prefix"))
|
||||
print(inspect(a--, "global int decrement postfix"))
|
||||
print(inspect(--a, "global int decrement prefix"))
|
||||
print(inspect(+a, "global int unary plus"))
|
||||
print(inspect(-a, "global int unary minus"))
|
||||
print(inspect(b--, "global undefined decrement postfix"))
|
||||
print(inspect(--b, "global undefined decrement prefix"))
|
||||
print(inspect(x, "object"))
|
||||
print(inspect(x/x, "object division by object"))
|
||||
print(inspect(x/y, "object division by object"))
|
@ -0,0 +1,38 @@
|
||||
local int multiplication by local int: int
|
||||
local int division by local int without remainder: int
|
||||
local int division by local int with remainder: double
|
||||
local int modulo by local int: int
|
||||
local int addition local int: int
|
||||
local int substraction local int: int
|
||||
max value multiplication by max value: double
|
||||
infinity multiplication by infinity: double
|
||||
-1 division by infinity: double
|
||||
infinity division by zero: double
|
||||
infinity division by String: double
|
||||
local undefined division by local undefined: double
|
||||
local undefined multiplication by local undefined: double
|
||||
local undefined addition local int: double
|
||||
local undefined decrement postfix: double
|
||||
local undefined decrement prefix: double
|
||||
local int increment postfix: int
|
||||
local int increment prefix: int
|
||||
local int decrement postfix: int
|
||||
local int decrement prefix: int
|
||||
local int unary plus: int
|
||||
local int unary minus: int
|
||||
undefined multiplication by undefined: double
|
||||
undefined division by undefined: double
|
||||
global int addition global int: int
|
||||
global int substraction global int: int
|
||||
global int multiplication by global int: int
|
||||
global int increment postfix: int
|
||||
global int increment prefix: int
|
||||
global int decrement postfix: int
|
||||
global int decrement prefix: int
|
||||
global int unary plus: int
|
||||
global int unary minus: int
|
||||
global undefined decrement postfix: double
|
||||
global undefined decrement prefix: double
|
||||
object: object
|
||||
object division by object: double
|
||||
object division by object: double
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8036987, 8037572
|
||||
* @summary Implement tests that checks static types in the compiled code
|
||||
* @run
|
||||
*/
|
||||
|
||||
var inspect = Java.type("jdk.nashorn.test.tools.StaticTypeInspector").inspect
|
||||
var a = b = 3;
|
||||
var c;
|
||||
var x = { a: 2, b:1, c: 7, d: -1, e: 1}
|
||||
var y = { a: undefined, b: undefined}
|
||||
|
||||
// Testing assignment operators
|
||||
//-- Global variable
|
||||
print(inspect(a=c, "global int assignment to global variable"))
|
||||
print(inspect(a=b, "undefined assignment to global int"))
|
||||
print(inspect(a=y.a, "global int assignment to undefined"))
|
||||
print(inspect(a+=b, "undefined addition assignment to global int"))
|
||||
print(inspect(b=b+b, "global int addition global int"))
|
||||
print(inspect(b+= y.a, "global int addition assignment undefined"))
|
||||
//--Local variable
|
||||
print(inspect(x.a+= y.a, "local int addition assignment local undefined"))
|
||||
print(inspect(x.b=y.a, "local int assignment to undefined"))
|
||||
print(inspect(y.a+=y.a, "local undefined addition assignment local undefined"))
|
||||
print(inspect(x.c-=x.d, "local int substraction assignment local int"))
|
||||
print(inspect(x.c*=x.d, "local int multiplication assignment local int"))
|
||||
print(inspect(x.c/=x.d, "local int division assignment local int"))
|
||||
print(inspect(y.b=x.c, "local undefined assignment to local int"))
|
||||
print(inspect(y.c=x.c, "local boolean assignment to local int"))
|
@ -0,0 +1,14 @@
|
||||
global int assignment to global variable: undefined
|
||||
undefined assignment to global int: int
|
||||
global int assignment to undefined: undefined
|
||||
undefined addition assignment to global int: double
|
||||
global int addition global int: int
|
||||
global int addition assignment undefined: double
|
||||
local int addition assignment local undefined: double
|
||||
local int assignment to undefined: undefined
|
||||
local undefined addition assignment local undefined: double
|
||||
local int substraction assignment local int: int
|
||||
local int multiplication assignment local int: int
|
||||
local int division assignment local int: int
|
||||
local undefined assignment to local int: int
|
||||
local boolean assignment to local int: int
|
@ -22,72 +22,78 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* JDK-8036987 : Implement tests that checks static types in the compiled code
|
||||
* @test
|
||||
* @bug 8036987, 8037572
|
||||
* @summary Implement tests that checks static types in the compiled code
|
||||
* @run
|
||||
*/
|
||||
|
||||
var inspect = Java.type("jdk.nashorn.test.tools.StaticTypeInspector").inspect
|
||||
var a=3,b,c,z,y;
|
||||
var a=3, b=2.3, c=true, d;
|
||||
var x = { a: 2, b:0, c:undefined}
|
||||
var trees = new Array("redwood", "bay", "cedar", "oak");
|
||||
|
||||
// Testing arithmetic operators
|
||||
print(inspect(y*z, "undefined value multiplication by undefined value"))
|
||||
print(inspect(y/z, "undefined value division by undefined value"))
|
||||
// Testing conditional operator
|
||||
print(inspect("" ? b : x.a, "ternary operator"))
|
||||
print(inspect(x.b ? b : x.a, "ternary operator"))
|
||||
print(inspect(c ? b : a, "ternary operator"))
|
||||
print(inspect(!c ? b : a, "ternary operator"))
|
||||
print(inspect(d ? b : x.c, "ternary operator"))
|
||||
print(inspect(x.c ? a : c, "ternary operator"))
|
||||
print(inspect(c ? d : a, "ternary operator"))
|
||||
print(inspect(c ? +a : b, "ternary operator"))
|
||||
|
||||
var x = { a: 2, b:1 }
|
||||
print(inspect(x.a*x.b, "int multiplication by int"))
|
||||
print(inspect(x.a/x.b, "int division by int without remainder"))
|
||||
// Testing format methods
|
||||
print(inspect(b.toFixed(2), "global double toFixed()"))
|
||||
print(inspect(b.toPrecision(2)/1, "global double toPrecision() divided by 1"))
|
||||
print(inspect(b.toExponential(2), "global double toExponential()"))
|
||||
|
||||
x.a = 7;
|
||||
x.b = 2;
|
||||
print(inspect(x.a/x.b, "int division by int with remainder"))
|
||||
print(inspect(x.a%x.b, "int modulus by int"))
|
||||
print(inspect(x.a+x.b, "int plus int"))
|
||||
|
||||
x.a = Number.MAX_VALUE;
|
||||
x.b = Number.MAX_VALUE;
|
||||
print(inspect(x.a*x.b, "max value multiplication by max value"))
|
||||
|
||||
x.a = Number.POSITIVE_INFINITY;
|
||||
x.b = Number.POSITIVE_INFINITY;
|
||||
print(inspect(x.a*x.b, "infinity multiplication by infinity"))
|
||||
|
||||
x.a = -1;
|
||||
x.b = Number.POSITIVE_INFINITY;
|
||||
print(inspect(x.a/x.b, "-1 division by infinity"))
|
||||
|
||||
x.a = Number.POSITIVE_INFINITY;
|
||||
x.b = 0;
|
||||
print(inspect(x.a/x.b, "infinity division by zero"))
|
||||
|
||||
x.a = Number.POSITIVE_INFINITY;
|
||||
x.b = 'Hello';
|
||||
print(inspect(x.a/x.b, "infinity division by String"))
|
||||
// Testing arrays
|
||||
print(inspect(trees[1], "member object"))
|
||||
trees[1] = undefined;
|
||||
print(inspect(trees[1], "member undefined"))
|
||||
print(inspect(1 in trees ? b : a, "conditional on array member"))
|
||||
delete trees[2]
|
||||
print(inspect(2 in trees ? b : a, "conditional on array member"))
|
||||
print(inspect(3 in trees ? trees[2]="bay" : a, "conditional on array member"))
|
||||
print(inspect("oak" in trees ? b : a, "conditional on array member"))
|
||||
|
||||
// Testing nested functions and return value
|
||||
function f() {
|
||||
function f1() {
|
||||
var x = 2, y = 1;
|
||||
function g() {
|
||||
print(inspect(x, "outer local variable"));
|
||||
print(inspect(a, "global variable"));
|
||||
print(inspect(x*y, "outer local variable multiplication by outer local variable"));
|
||||
print(inspect(a*b, "global variable multiplication by global variable undefined"));
|
||||
print(inspect(x*y, "outer local int multiplication by outer local int"));
|
||||
print(inspect(a*d, "global int multiplication by global undefined"));
|
||||
}
|
||||
g()
|
||||
}
|
||||
f()
|
||||
|
||||
function f1(a,b,c) {
|
||||
d = (a+b) * c;
|
||||
print(inspect(c, "c"));
|
||||
print(inspect(a+b, "a+b"));
|
||||
print(inspect(d, "d"));
|
||||
}
|
||||
f1()
|
||||
|
||||
|
||||
function f2(a,b) {
|
||||
d = a && b;
|
||||
print(inspect(d, "d"));
|
||||
function f2(a,b,c) {
|
||||
g = (a+b) * c;
|
||||
print(inspect(c, "local undefined"));
|
||||
print(inspect(a+b, "local undefined addition local undefined"));
|
||||
print(inspect(g, "local undefined multiplication by undefined"));
|
||||
}
|
||||
f2()
|
||||
f2()
|
||||
|
||||
function f3(a,b) {
|
||||
g = a && b;
|
||||
print(inspect(g, "local undefined AND local undefined"));
|
||||
print(inspect(c||g, "global true OR local undefined"));
|
||||
}
|
||||
f3()
|
||||
|
||||
function f4() {
|
||||
var x = true, y = 0;
|
||||
function g() {
|
||||
print(inspect(x+y, "outer local true addition local int"));
|
||||
print(inspect(a+x, "global int addition outer local true"));
|
||||
print(inspect(x*y, "outer local true multiplication by outer local int"));
|
||||
print(inspect(y*d, "outer local int multiplication by global undefined"));
|
||||
}
|
||||
g()
|
||||
}
|
||||
f4()
|
@ -1,20 +1,30 @@
|
||||
undefined value multiplication by undefined value: double
|
||||
undefined value division by undefined value: double
|
||||
int multiplication by int: int
|
||||
int division by int without remainder: int
|
||||
int division by int with remainder: double
|
||||
int modulus by int: int
|
||||
int plus int: int
|
||||
max value multiplication by max value: double
|
||||
infinity multiplication by infinity: double
|
||||
-1 division by infinity: double
|
||||
infinity division by zero: double
|
||||
infinity division by String: double
|
||||
ternary operator: int
|
||||
ternary operator: int
|
||||
ternary operator: double
|
||||
ternary operator: int
|
||||
ternary operator: undefined
|
||||
ternary operator: boolean
|
||||
ternary operator: undefined
|
||||
ternary operator: int
|
||||
global double toFixed(): object
|
||||
global double toPrecision() divided by 1: double
|
||||
global double toExponential(): object
|
||||
member object: object
|
||||
member undefined: undefined
|
||||
conditional on array member: double
|
||||
conditional on array member: int
|
||||
conditional on array member: object
|
||||
conditional on array member: int
|
||||
outer local variable: int
|
||||
global variable: int
|
||||
outer local variable multiplication by outer local variable: int
|
||||
global variable multiplication by global variable undefined: double
|
||||
c: undefined
|
||||
a+b: double
|
||||
d: double
|
||||
d: undefined
|
||||
outer local int multiplication by outer local int: int
|
||||
global int multiplication by global undefined: double
|
||||
local undefined: undefined
|
||||
local undefined addition local undefined: double
|
||||
local undefined multiplication by undefined: double
|
||||
local undefined AND local undefined: undefined
|
||||
global true OR local undefined: boolean
|
||||
outer local true addition local int: double
|
||||
global int addition outer local true: double
|
||||
outer local true multiplication by outer local int: double
|
||||
outer local int multiplication by global undefined: double
|
65
nashorn/test/script/basic/optimistic_logical_check_type.js
Normal file
65
nashorn/test/script/basic/optimistic_logical_check_type.js
Normal file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8036987, 8037572
|
||||
* @summary Implement tests that checks static types in the compiled code
|
||||
* @run
|
||||
*/
|
||||
|
||||
var inspect = Java.type("jdk.nashorn.test.tools.StaticTypeInspector").inspect
|
||||
var a = 3, b = true, c = 0;
|
||||
var x = { a: 2, b: undefined, c: true}
|
||||
|
||||
// Testing logical operators
|
||||
//-- Global variable
|
||||
print(inspect("cat" && "dog", "object AND object"))
|
||||
print(inspect(b && a, "true AND non-falsey global int"))
|
||||
print(inspect(a && b, "non-falsey global int AND true"))
|
||||
print(inspect(x && b, "non-falsey object AND true"))
|
||||
print(inspect(b && x, "true AND non-falsey object"))
|
||||
print(inspect("cat" || "dog", "object OR object"))
|
||||
print(inspect(b || a, "true OR non-falsey global int"))
|
||||
print(inspect(a || b, "non-falsey global int OR true"))
|
||||
print(inspect(x || b, "non-falsey object OR true"))
|
||||
print(inspect(b || x, "true OR non-falsey object"))
|
||||
print(inspect(!x.c || b, "false OR true"))
|
||||
print(inspect(c && b, "falsey global int AND true"))
|
||||
print(inspect(c || x.b, "falsey global int OR undefined"))
|
||||
print(inspect(!c || x.b, "logical not falsey global int OR undefined"))
|
||||
print(inspect(!b || x.b, "false OR undefined"))
|
||||
print(inspect(!b || c, "false OR falsey global int"))
|
||||
print(inspect(!c || c, "logical not falsey global int OR falsey global int"))
|
||||
//--Local variable
|
||||
print(inspect(x.b && a, "local undefined AND non-falsey global int"))
|
||||
print(inspect(b && x.b, "true AND local undefined"))
|
||||
print(inspect(x.b && x.a, "local undefined AND non-falsey local int"))
|
||||
print(inspect(x.b || b, "local undefined OR true"))
|
||||
print(inspect(b || x.b, "true OR local undefined"))
|
||||
print(inspect(x.a && x.c, "non-falsey local int AND true"))
|
||||
print(inspect(x.c && x.a, "true AND non-falsey local int"))
|
||||
print(inspect(x.c && !!x.a, "true AND double logical not non-falsey local int "))
|
||||
print(inspect(!x.c && x.a, "false AND non-falsey local int"))
|
||||
print(inspect(x.a || x.c, "non-falsey local int OR true"))
|
||||
print(inspect(!x.c || x.c, "false OR true"))
|
@ -0,0 +1,28 @@
|
||||
object AND object: object
|
||||
true AND non-falsey global int: int
|
||||
non-falsey global int AND true: boolean
|
||||
non-falsey object AND true: boolean
|
||||
true AND non-falsey object: object
|
||||
object OR object: object
|
||||
true OR non-falsey global int: boolean
|
||||
non-falsey global int OR true: int
|
||||
non-falsey object OR true: object
|
||||
true OR non-falsey object: boolean
|
||||
false OR true: boolean
|
||||
falsey global int AND true: int
|
||||
falsey global int OR undefined: undefined
|
||||
logical not falsey global int OR undefined: boolean
|
||||
false OR undefined: undefined
|
||||
false OR falsey global int: int
|
||||
logical not falsey global int OR falsey global int: boolean
|
||||
local undefined AND non-falsey global int: undefined
|
||||
true AND local undefined: undefined
|
||||
local undefined AND non-falsey local int: undefined
|
||||
local undefined OR true: boolean
|
||||
true OR local undefined: boolean
|
||||
non-falsey local int AND true: boolean
|
||||
true AND non-falsey local int: int
|
||||
true AND double logical not non-falsey local int : boolean
|
||||
false AND non-falsey local int: boolean
|
||||
non-falsey local int OR true: int
|
||||
false OR true: boolean
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8035652,8037858
|
||||
* @summary Implement tests that checks static types in the compiled code
|
||||
* @run
|
||||
*/
|
||||
|
||||
var inspect = Java.type("jdk.nashorn.test.tools.StaticTypeInspector").inspect
|
||||
var a = b = c = 3;
|
||||
|
||||
//JDK-8035652
|
||||
print(inspect(a/a, "global int division by global int"))
|
||||
print(inspect(a%a, "global int modulus by global int"))
|
||||
print(inspect(b+=b, "global int addition assignment global int"))
|
||||
//JDK-8037858
|
||||
print(inspect(b-=b, "global int substraction assignment global int"))
|
||||
print(inspect(c*=a, "global int multiplication assignment global int"))
|
||||
print(inspect(a/=a, "global int division assignment global int"))
|
||||
print(inspect(c%=c, "global int modulo assignment global int"))
|
@ -0,0 +1,7 @@
|
||||
global int division by global int: int
|
||||
global int modulus by global int: int
|
||||
global int addition assignment global int: int
|
||||
global int substraction assignment global int: int
|
||||
global int multiplication assignment global int: int
|
||||
global int division assignment global int: int
|
||||
global int modulo assignment global int: int
|
Loading…
Reference in New Issue
Block a user