langtools/test/tools/javac/lambda/EffectivelyFinalThrows.java
author lana
Tue, 25 Apr 2017 07:38:50 +0000
changeset 44909 b53c770dc04f
parent 19933 5182bc65845b
permissions -rw-r--r--
Added tag jdk-10+1 for changeset 3a409afd3f86
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19933
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     1
/*
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     2
 * @test /nodynamiccopyright/
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     3
 * @bug 8019521
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     4
 * @summary Check that enhanced rethrow/effectivelly final works correctly inside lambdas
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     5
 * @compile EffectivelyFinalThrows.java
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     6
 */
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     7
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     8
class EffectivelyFinalThrows {
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
     9
    interface SAM<E extends Throwable> {
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    10
        public void t() throws E;
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    11
    }
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    12
    <E extends Throwable> void test(SAM<E> s) throws E {
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    13
        s.t();
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    14
    }
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    15
    void test2(SAM<Checked> s) throws Checked {
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    16
        test(() -> {
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    17
            try {
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    18
                s.t();
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    19
            } catch (Throwable t) {
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    20
                throw t;
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    21
            }
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    22
        });
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    23
    }
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    24
    static class Checked extends Exception {}
5182bc65845b 8019521: Enhanced rethrow disabled in lambdas
jlahoda
parents:
diff changeset
    25
}