hg: amber/amber/langtools: 2 new changesets
Gavin Bierman
gavin.bierman at oracle.com
Mon Sep 18 14:26:53 UTC 2017
This latest push to the patterns repo contains an important change in semantics. We intend pattern matching to be an enhancement to the current switch statement. Until now, any switch with a pattern label did not support fall-through (or put another way, we inserted break statements at the end of each pattern clause). This latest build supports fall-through; thus you may need to add break statements to preserve the semantics of any existing pattern matching code.
Here is an example of fallthrough and patterns.
switch(o){
case Boolean b:
case Byte by:
case Short s:
case Character c:
case Integer i:
case Long l:
case Float f:
case Double d: {
System.out.println("Boxed primitive type");
break;
}
default: System.out.println("Non-boxed primitive type");
}
Enjoy!
Gavin
> On 18 Sep 2017, at 15:16, gavin.bierman at oracle.com wrote:
>
> Changeset: f86e38de8872
> Author: gbierman
> Date: 2017-09-18 14:28 +0100
> URL: http://hg.openjdk.java.net/amber/amber/langtools/rev/f86e38de8872
>
> Adding support for fall-through in matching switch for front end (attr, flow).
>
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java
> ! test/TEST.ROOT
> + test/tools/javac/diags/examples/PatternDominated.java
> ! test/tools/javac/patterns/BindingsTest1.java
> ! test/tools/javac/patterns/BreakInsideMatch.java
> ! test/tools/javac/patterns/ConstantPatternTest1.java
> ! test/tools/javac/patterns/DefaultClauseMustBeLast.java
> ! test/tools/javac/patterns/DefaultClauseMustBeLast.out
> ! test/tools/javac/patterns/ExamplesFromProposal.java
> ! test/tools/javac/patterns/FlowAnalysisAndConstantPatterns.java
> ! test/tools/javac/patterns/FlowAnalysisAndConstantPatterns.out
> ! test/tools/javac/patterns/FlowAnalysisTest.out
> ! test/tools/javac/patterns/MatchStmtTest.java
> ! test/tools/javac/patterns/NestingMatchAndMatches.java
> ! test/tools/javac/patterns/NullPatternTest.java
> ! test/tools/javac/patterns/PrimitiveSelectorTest.java
> + test/tools/javac/patterns/SwitchFallThrough1.java
> + test/tools/javac/patterns/SwitchFallThrough2.java
> + test/tools/javac/patterns/SwitchFallThrough2.out
> + test/tools/javac/patterns/VoidTest.java
> + test/tools/javac/patterns/VoidTest.out
>
> Changeset: 733f2c422807
> Author: gbierman
> Date: 2017-09-18 14:28 +0100
> URL: http://hg.openjdk.java.net/amber/amber/langtools/rev/733f2c422807
>
> Fixing if-cascade desugaring to allow fall-through in matching switch.
>
> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
>
More information about the amber-dev
mailing list