author | vromero |
Thu, 22 Feb 2018 15:49:32 -0500 | |
changeset 48935 | 03ae177c26b0 |
parent 48926 | 02404e27d356 |
permissions | -rw-r--r-- |
47268
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
1 |
/* |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
2 |
* @test /nodynamiccopyright/ |
48551
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
3 |
* @bug 8177466 8189146 |
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
4 |
* @compile/ref=ParserTest9.out -XDrawDiagnostics --release 9 ParserTest.java |
47268
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
5 |
* @summary Add compiler support for local variable type-inference |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
6 |
* @compile/fail/ref=ParserTest.out -XDrawDiagnostics ParserTest.java |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
7 |
*/ |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
8 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
9 |
import java.lang.annotation.ElementType; |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
10 |
import java.lang.annotation.Target; |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
11 |
import java.util.function.Function; |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
12 |
import java.util.List; |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
13 |
|
48551
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
14 |
class ParserTest<var extends AutoCloseable> { |
47268
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
15 |
static class TestClass { |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
16 |
static class var { } //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
17 |
} |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
18 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
19 |
static class TestInterface { |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
20 |
interface var { } //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
21 |
} |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
22 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
23 |
static class TestEnum { |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
24 |
enum var { } //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
25 |
} |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
26 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
27 |
static class TestAnno { |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
28 |
@interface var { } //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
29 |
} |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
30 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
31 |
@Target(ElementType.TYPE_USE) |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
32 |
@interface TA { } |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
33 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
34 |
@interface DA { } |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
35 |
|
48551
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
36 |
static abstract class var extends RuntimeException implements AutoCloseable { } //illegal |
47268
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
37 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
38 |
var x = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
39 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
40 |
void test() { |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
41 |
var[] x1 = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
42 |
var x2[] = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
43 |
var[][] x3 = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
44 |
var x4[][] = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
45 |
var[] x5 = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
46 |
var x6[] = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
47 |
var@TA[]@TA[] x7 = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
48 |
var x8@TA[]@TA[] = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
49 |
var x9 = null, y = null; //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
50 |
final @DA var x10 = m(); //ok |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
51 |
@DA final var x11 = m(); //ok |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
52 |
} |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
53 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
54 |
var m() { //illegal |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
55 |
return null; |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
56 |
} |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
57 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
58 |
void test2(var x) { //error |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
59 |
List<var> l1; //error |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
60 |
List<? extends var> l2; //error |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
61 |
List<? super var> l3; //error |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
62 |
try { |
48935
03ae177c26b0
8198512: compiler support for local-variable syntax for lambda parameters
vromero
parents:
48926
diff
changeset
|
63 |
Function<var, String> f = (var x2) -> ""; //ok |
47268
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
64 |
} catch (var ex) { } //error |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
65 |
} |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
66 |
|
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
67 |
void test3(Object o) { |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
68 |
boolean b1 = o instanceof var; //error |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
69 |
Object o2 = (var)o; //error |
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
70 |
} |
48551
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
71 |
|
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
72 |
void test4() throws Exception { |
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
73 |
try (final var resource1 = null; // ok |
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
74 |
var resource2 = null) { // ok |
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
75 |
} |
9cf44c40aa35
8189146: Have use of "var" in 9 and earlier source versions issue a warning for type declarations
darcy
parents:
47268
diff
changeset
|
76 |
} |
47268
48ec75306997
8177466: Add compiler support for local variable type-inference
mcimadamore
parents:
diff
changeset
|
77 |
} |