mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-16 09:04:41 +02:00
8003280: Add lambda tests
Turn on lambda expression, method reference and default method support Reviewed-by: jjg
This commit is contained in:
parent
c39f1d99b4
commit
a494f0ab86
451 changed files with 15433 additions and 488 deletions
163
langtools/test/tools/javac/lambda/LambdaScope04.java
Normal file
163
langtools/test/tools/javac/lambda/LambdaScope04.java
Normal file
|
@ -0,0 +1,163 @@
|
|||
/*
|
||||
* @test /nodynamiccopyright/
|
||||
* @bug 8003280
|
||||
* @summary Add lambda tests
|
||||
* check that lambda cannot shadow variables from enclosing scope
|
||||
* @compile/fail/ref=LambdaScope04.out -XDrawDiagnostics LambdaScope04.java
|
||||
*/
|
||||
|
||||
class LambdaScope04 {
|
||||
|
||||
interface SAM {
|
||||
void m(Object o);
|
||||
}
|
||||
|
||||
static SAM field1 = field1->{}; //ok
|
||||
static SAM field2 = param->{ Object field2 = null; }; //ok
|
||||
|
||||
SAM field3 = field3->{}; //ok
|
||||
SAM field4 = param->{ Object field4 = null; }; //ok
|
||||
|
||||
{
|
||||
Object local = null;
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
}
|
||||
|
||||
static {
|
||||
Object local = null;
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
|
||||
void testLocalInstance() {
|
||||
Object local = null;
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
|
||||
static void testLocalStatic() {
|
||||
Object local = null;
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
|
||||
void testParamInstance(Object local) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
|
||||
static void testParamStatic(Object local) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
|
||||
void testForInstance() {
|
||||
for (int local = 0; local != 0 ; local++) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
static void testForStatic(Iterable<Object> elems) {
|
||||
for (int local = 0; local != 0 ; local++) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
void testForEachInstance(Iterable<Object> elems) {
|
||||
for (Object local : elems) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
static void testForEachStatic(Iterable<Object> elems) {
|
||||
for (Object local : elems) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
void testCatchInstance() {
|
||||
try { } catch (Throwable local) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
static void testCatchStatic(Iterable<Object> elems) {
|
||||
try { } catch (Throwable local) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
void testTWRInstance(AutoCloseable res) {
|
||||
try (AutoCloseable local = res) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
} finally { }
|
||||
}
|
||||
|
||||
static void testTWRStatic(AutoCloseable res) {
|
||||
try (AutoCloseable local = res) {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
} finally { }
|
||||
}
|
||||
|
||||
void testBlockLocalInstance() {
|
||||
Object local = null;
|
||||
{
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
static void testBlockLocalStatic() {
|
||||
Object local = null;
|
||||
{
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
|
||||
void testSwitchLocalInstance(int i) {
|
||||
switch (i) {
|
||||
case 0: Object local = null;
|
||||
default: {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void testSwitchLocalStatic(int i) {
|
||||
switch (i) {
|
||||
case 0: Object local = null;
|
||||
default: {
|
||||
SAM s1 = local->{}; //error
|
||||
SAM s2 = param->{ Object local = null; }; //error
|
||||
SAM s3 = field1->{ Object field_2 = null; }; //ok
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue