git: openjdk/jdk: 8300543: Compiler Implementation for Pattern Matching for switch

Jan Lahoda jlahoda at openjdk.org
Mon May 22 04:24:45 UTC 2023


Changeset: eaa80ad0
Author:    Jan Lahoda <jlahoda at openjdk.org>
Date:      2023-05-22 04:24:06 +0000
URL:       https://git.openjdk.org/jdk/commit/eaa80ad08c949a05abcfa48897654ed52139145b

8300543: Compiler Implementation for Pattern Matching for switch
8300545: Compiler Implementation for Record Patterns

Co-authored-by: Aggelos Biboudis <abimpoudis at openjdk.org>
Reviewed-by: vromero, mcimadamore

! src/java.base/share/classes/java/lang/MatchException.java
! src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java
! src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/CallArranger.java
! src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java
! src/jdk.compiler/share/classes/com/sun/source/tree/CaseLabelTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/ConstantCaseLabelTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/DeconstructionPatternTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/DefaultCaseLabelTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/EnhancedForLoopTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/InstanceOfTree.java
- src/jdk.compiler/share/classes/com/sun/source/tree/ParenthesizedPatternTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/PatternCaseLabelTree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java
! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java
! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java
! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ThisEscapeAnalyzer.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TreeDiffer.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.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
! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java
! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java
! test/jdk/java/lang/runtime/SwitchBootstrapsTest.java
! test/langtools/tools/javac/ConditionalExpressionResolvePending.java
! test/langtools/tools/javac/T8286797.java
! test/langtools/tools/javac/T8286797.out
- test/langtools/tools/javac/T8290379.java
! test/langtools/tools/javac/T8295447.java
! test/langtools/tools/javac/T8295447.out
- test/langtools/tools/javac/T8297602.java
! test/langtools/tools/javac/annotations/typeAnnotations/classfile/Patterns.java
! test/langtools/tools/javac/classfiles/attributes/LineNumberTable/RuleSwitchBreaks.java
! test/langtools/tools/javac/diags/examples.not-yet.txt
+ test/langtools/tools/javac/diags/examples/CannotAssignNotDeclaredGuard.java
! test/langtools/tools/javac/diags/examples/CantRefNonEffectivelyFinalVar.java
! test/langtools/tools/javac/diags/examples/CaseNull.java
! test/langtools/tools/javac/diags/examples/ConstantLabelNotCompatible.java
! test/langtools/tools/javac/diags/examples/DeconstructionPatternOnlyRecords.java
! test/langtools/tools/javac/diags/examples/DefaultLabelNotAllowed.java
! test/langtools/tools/javac/diags/examples/DuplicateUnconditionalPattern.java
! test/langtools/tools/javac/diags/examples/EnumLabelUnqualified.java
+ test/langtools/tools/javac/diags/examples/FeatureDeconstructionPatterns.java
! test/langtools/tools/javac/diags/examples/FeatureUnconditionalPatternsInInstanceof.java
! test/langtools/tools/javac/diags/examples/FlowsThroughFromPattern.java
! test/langtools/tools/javac/diags/examples/FlowsThroughToPattern.java
- test/langtools/tools/javac/diags/examples/ForeachNotExhaustive.java
! test/langtools/tools/javac/diags/examples/GuardHasConstantFalse.java
+ test/langtools/tools/javac/diags/examples/GuardNotAllowed.java
! test/langtools/tools/javac/diags/examples/IncorrectNumberOfNestedPatterns.java
- test/langtools/tools/javac/diags/examples/InstanceofPatternNoSubtype.java
! test/langtools/tools/javac/diags/examples/InvalidCaseLabelCombination.java
! test/langtools/tools/javac/diags/examples/NotApplicableTypes.java
! test/langtools/tools/javac/diags/examples/NotExhaustiveStatement.java
! test/langtools/tools/javac/diags/examples/PatternDominated.java
! test/langtools/tools/javac/diags/examples/PatternExpected.java
! test/langtools/tools/javac/diags/examples/PatternSwitch.java
! test/langtools/tools/javac/diags/examples/PatternTypeCannotInfer.java
+ test/langtools/tools/javac/diags/examples/RecordPatternsAnnotationsNotAllowed.java
! test/langtools/tools/javac/diags/examples/UnconditionalPatternAndDefault.java
! test/langtools/tools/javac/enum/EnumSwitch2.java
! test/langtools/tools/javac/lib/DPrinter.java
! test/langtools/tools/javac/parser/JavacParserTest.java
+ test/langtools/tools/javac/patterns/AnnotationErrors.java
+ test/langtools/tools/javac/patterns/AnnotationErrors.out
! test/langtools/tools/javac/patterns/CaseStructureTest.java
! test/langtools/tools/javac/patterns/DeconstructionDesugaring.java
! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.java
! test/langtools/tools/javac/patterns/DeconstructionPatternErrors.out
! test/langtools/tools/javac/patterns/DisambiguatePatterns.java
! test/langtools/tools/javac/patterns/Domination.java
! test/langtools/tools/javac/patterns/Domination.out
! test/langtools/tools/javac/patterns/EmptyRecordClass.java
! test/langtools/tools/javac/patterns/EnumTypeChanges.java
! test/langtools/tools/javac/patterns/EnumTypeChangesNonPreview.java
! test/langtools/tools/javac/patterns/Exhaustiveness.java
- test/langtools/tools/javac/patterns/ForEachPatterns.java
- test/langtools/tools/javac/patterns/ForEachPatternsErrors.java
- test/langtools/tools/javac/patterns/ForEachPatternsErrors.out
- test/langtools/tools/javac/patterns/ForEachTestAllAnalyzers.java
! test/langtools/tools/javac/patterns/GenericRecordDeconstructionPattern.java
! test/langtools/tools/javac/patterns/Guards.java
! test/langtools/tools/javac/patterns/GuardsErrors.java
! test/langtools/tools/javac/patterns/GuardsErrors.out
! test/langtools/tools/javac/patterns/InstanceofTotalPattern-15.out
! test/langtools/tools/javac/patterns/InstanceofTotalPattern-16.out
+ test/langtools/tools/javac/patterns/InstanceofTotalPattern-20.out
- test/langtools/tools/javac/patterns/InstanceofTotalPattern-preview.out
! test/langtools/tools/javac/patterns/InstanceofTotalPattern.java
! test/langtools/tools/javac/patterns/LambdaCannotCapturePatternVariables.java
! test/langtools/tools/javac/patterns/MatchExceptionTest.java
! test/langtools/tools/javac/patterns/NestedDeconstructionPattern.java
! test/langtools/tools/javac/patterns/NestedPatternVariablesBytecode.java
! test/langtools/tools/javac/patterns/NestedPrimitiveDeconstructionPattern.java
! test/langtools/tools/javac/patterns/NewCaseStructureTest.java
! test/langtools/tools/javac/patterns/NoSubtypeCheck.java
! test/langtools/tools/javac/patterns/NullSwitch.java
! test/langtools/tools/javac/patterns/NullsInDeconstructionPatterns.java
! test/langtools/tools/javac/patterns/NullsInPatterns.java
! test/langtools/tools/javac/patterns/Parenthesized.java
+ test/langtools/tools/javac/patterns/Parenthesized.out
- test/langtools/tools/javac/patterns/ParenthesizedCombo.java
! test/langtools/tools/javac/patterns/PatternCaseErrorRecovery.java
! test/langtools/tools/javac/patterns/PatternDesugaring.java
- test/langtools/tools/javac/patterns/PatternErrorRecovery-no-preview.out
+ test/langtools/tools/javac/patterns/PatternErrorRecovery-old.out
! test/langtools/tools/javac/patterns/PatternErrorRecovery.java
! test/langtools/tools/javac/patterns/PatternErrorRecovery.out
! test/langtools/tools/javac/patterns/PrettyTest.java
! test/langtools/tools/javac/patterns/ProxyMethodLookup.java
! test/langtools/tools/javac/patterns/RawTypeBindingWarning.java
! test/langtools/tools/javac/patterns/RawTypeBindingWarning.out
! test/langtools/tools/javac/patterns/SealedTypeChanges.java
! test/langtools/tools/javac/patterns/SimpleAndGuardPattern.java
! test/langtools/tools/javac/patterns/SimpleDeconstructionPattern.java
- test/langtools/tools/javac/patterns/SimpleDeconstructionPatternNoPreview.out
+ test/langtools/tools/javac/patterns/SimpleDeconstructionPatternOld.out
! test/langtools/tools/javac/patterns/SourceLevelChecks.java
! test/langtools/tools/javac/patterns/SwitchErrors.java
! test/langtools/tools/javac/patterns/SwitchErrors.out
! test/langtools/tools/javac/patterns/Switches.java
! test/langtools/tools/javac/patterns/T8291657.java
! test/langtools/tools/javac/patterns/TranslationTest.java
! test/langtools/tools/javac/patterns/TypedDeconstructionPatternExc.java
! test/langtools/tools/javac/patterns/VarErrors.java
! test/langtools/tools/javac/patterns/VarErrors.out
! test/langtools/tools/javac/sealed/MissingPermittedSubtypes.java
! test/langtools/tools/javac/switchexpr/ExhaustiveEnumSwitch.java
! test/langtools/tools/javac/switchexpr/SwitchExpressionNoValue.java
+ test/langtools/tools/javac/switchextra/EnumSwitchQualified.java
+ test/langtools/tools/javac/switchextra/EnumSwitchQualifiedErrors.java
+ test/langtools/tools/javac/switchextra/EnumSwitchQualifiedErrors.out
! test/langtools/tools/javac/switchextra/RuleParsingTest.java
! test/langtools/tools/javac/switchextra/SwitchNoExtraTypes.out
! test/langtools/tools/javac/switchextra/SwitchObject.out
! test/langtools/tools/javac/switchnull/SwitchNull.java
- test/langtools/tools/javac/switchnull/SwitchNullDisabled-preview.out
! test/langtools/tools/javac/switchnull/SwitchNullDisabled.java
! test/langtools/tools/javac/switchnull/SwitchNullDisabled.out
! test/langtools/tools/lib/toolbox/TestRunner.java



More information about the jdk-changes mailing list