Branch: refs/heads/main
  Home:   https://github.com/pmd/pmd
  Commit: 307cda7d3f0a72e8fe8dca49d554b773269dd2b9
      https://github.com/pmd/pmd/commit/307cda7d3f0a72e8fe8dca49d554b773269dd2b9
  Author: Sebastian Lövdahl <[email protected]>
  Date:   2026-03-27 (Fri, 27 Mar 2026)

  Changed paths:
    M pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/TypeOps.java

  Log Message:
  -----------
  [java] Fix StackOverflowError in TypeOps projection of cyclic captured type 
vars

Root cause
----------
TypeOps.projectUpwards() / projectDownwards() use UPWARDS_PROJECTOR /
DOWNWARDS_PROJECTOR, which are JTypeVisitor implementations that recursively
walk a type and substitute captured type variables with their bounds.

For a captured var α whose upper bound is a parameterized type that contains
α again as a wildcard bound (e.g. Container<T extends Container<? extends T>>
produces α with upper bound Container<? extends α>), the projection entered
infinite mutual recursion:

  visitTypeVar(α) → follows bound Container<? extends α>
    → visitClass → recurseIfNotDone(? extends α)  [wildcard: no cycle guard]
      → visitWildcard(? extends α) → follows bound α
        → visitTypeVar(α) → follows bound Container<? extends α>  [cycle!]

RecursionStop.recurseIfNotDone only guarded against JTypeVar type args
(direct type-arg position in visitClass). Wildcards bypassed that guard,
so the wildcard → captured-var → bound → wildcard cycle was undetected.

Two distinct cycle paths require two distinct guards
----------------------------------------------------
visitTypeVar for a captured var α can be reached via two paths:

1. Via recurseIfNotDone body (direct type-arg in visitClass):
   recurseIfNotDone adds α to its set and calls body = visitTypeVar(α).
   Detected by contains(α) == true. The cycle guard for DIRECT type args
   is already handled by recurseIfNotDone itself (second encounter of α
   as a direct type arg returns α unchanged → isCvar → replaced with ?).
   However, α's bound may still lead back to α via a WILDCARD (not a
   direct type arg), escaping recurseIfNotDone's guard. This path needs
   its own cycle detection: containsCallStack.

2. Via a fresh call (top level) or via visitWildcard (wildcard-bound path):
   α is NOT yet in recurseIfNotDone's set. This is the original SOE path.
   Detected by contains(α) == false. This path needs freshCallStack.

The two stacks cannot be merged: the Scratch<T extends Scratch<T>> case
requires the recurseIfNotDone body call to proceed (even though an outer
fresh call may have already entered the same var in freshCallStack), because
the legitimate first-level unrolling (Scratch<T> → Scratch<? extends 
Scratch<?>>)
depends on the body following the bound before recurseIfNotDone catches the
second direct occurrence. Using a single shared stack would confuse the two
paths and prevent the correct projection.

RecursionStop now carries:
- contains(tvar): read-only check of the recurseIfNotDone set.
- enterFreshVar / leaveFreshVar: for fresh/wildcard-path cycle detection.
- enterContainsVar / leaveContainsVar: for contains-path cycle detection.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>


  Commit: 04e1a0a30040ec2b808c1a8e989bef4a4ea4441b
      https://github.com/pmd/pmd/commit/04e1a0a30040ec2b808c1a8e989bef4a4ea4441b
  Author: Sebastian Lövdahl <[email protected]>
  Date:   2026-03-27 (Fri, 27 Mar 2026)

  Changed paths:
    M 
pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/TypeOpsTest.kt

  Log Message:
  -----------
  [java] Add regression tests for StackOverflowError in projectUpwards with 
cyclic captured vars

Tests two distinct cycle paths that caused SOEs:

1. Fresh/wildcard path: captured var α whose upper bound directly contains
   a wildcard self-reference (Container<T extends Container<? extends T>>).
   Calling getValue() on Container<?> returns α; projecting α upwards visits
   Container<? extends α>, then the wildcard bound re-enters visitTypeVar(α).

2. Direct type-arg / contains path: captured var α appearing as a direct type
   argument in a class type (e.g. via wrap() returning Container<T>), where
   α's bound also contains a wildcard self-reference. visitClass calls
   recurseIfNotDone(α, body); body follows α's bound which leads back to α
   via a wildcard, re-entering visitTypeVar(α) through the contains path.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>


  Commit: d1969b28eaad6a855e933285c3b484c2dc43de8b
      https://github.com/pmd/pmd/commit/d1969b28eaad6a855e933285c3b484c2dc43de8b
  Author: Andreas Dangel <[email protected]>
  Date:   2026-05-07 (Thu, 07 May 2026)

  Changed paths:
    M .all-contributorsrc
    M .ci/files/Gemfile.lock
    M .ci/files/pmdtester.rb
    M .ci/files/project-list.xml
    M .ci/tools/typos.sh
    M .github/workflows/build.yml
    M .github/workflows/publish-pull-requests.yml
    M .github/workflows/publish-release.yml
    M .github/workflows/publish-snapshot.yml
    M do-release.sh
    M docs/Gemfile.lock
    M docs/_config.yml
    M docs/pages/pmd/languages/apex.md
    M docs/pages/pmd/languages/kotlin.md
    M docs/pages/pmd/languages/language_properties.md
    M docs/pages/pmd/projectdocs/credits.md
    M docs/pages/pmd/userdocs/installation.md
    M docs/pages/release_notes.md
    M docs/pages/release_notes_old.md
    M package-lock.json
    M pmd-ant/pom.xml
    M pmd-apex/pom.xml
    M pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTApexFile.java
    M 
pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/multifile/ApexMultifileAnalysis.java
    A 
pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKeyRule.java
    M 
pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/internal/Helper.java
    M pmd-apex/src/main/resources/category/apex/design.xml
    M pmd-apex/src/main/resources/category/apex/errorprone.xml
    M pmd-apex/src/main/resources/rulesets/apex/quickstart.xml
    A 
pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/multifile/ApexMultifileTestSupport.java
    M 
pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/UnusedMethodTest.java
    A 
pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKeyTest.java
    M pmd-apex/src/test/resources/fflib_SObjectDomain.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project1/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project1/src/AbstractKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project1/src/AbstractKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project1/src/IKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project1/src/IKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project1/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project1/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project2/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project2/src/IKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project2/src/IKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project2/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project2/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project3/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project3/src/AbstractKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project3/src/AbstractKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project3/src/IKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project3/src/IKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project3/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project3/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project4/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project4/src/AbstractKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project4/src/AbstractKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project4/src/IKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project4/src/IKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project4/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project4/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project5/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project5/src/AbstractKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project5/src/AbstractKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project5/src/IKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project5/src/IKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project5/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project5/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/AbstractKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/AbstractKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/ConcreteKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/ConcreteKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/IKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/IKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project6/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project7/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project7/src/OuterClass.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project7/src/OuterClass.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/BaseKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/BaseKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/IKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/IKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/MidKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project8/src/MidKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/sfdx-project.json
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/ConcreteBase.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/ConcreteBase.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/DeepAbstractKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/DeepAbstractKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/IBaseKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/IBaseKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/MapUser.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/MapUser.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/MidKey.cls
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/AvoidInterfaceAsMapKey/project9/src/MidKey.cls-meta.xml
    A 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/errorprone/xml/AvoidInterfaceAsMapKey.xml
    M 
pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/security/xml/ApexCRUDViolation.xml
    M pmd-cli/pom.xml
    M pmd-coco/pom.xml
    M pmd-core/pom.xml
    M 
pmd-core/src/main/java/net/sourceforge/pmd/benchmark/TextTimingReportRenderer.java
    M 
pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/BaseAntlrInnerNode.java
    M 
pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/BaseAntlrNode.java
    M 
pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/BaseAntlrTerminalNode.java
    M pmd-cpp/pom.xml
    M pmd-cs/pom.xml
    M pmd-css/pom.xml
    M pmd-dart/pom.xml
    M pmd-dist/pom.xml
    M pmd-dist/src/test/java/net/sourceforge/pmd/dist/AntIT.java
    M pmd-dist/src/test/java/net/sourceforge/pmd/dist/BinaryDistributionIT.java
    M pmd-doc/pom.xml
    M pmd-fortran/pom.xml
    M pmd-gherkin/pom.xml
    M pmd-go/pom.xml
    M pmd-groovy/pom.xml
    M pmd-html/pom.xml
    M pmd-java/pom.xml
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTImplicitClassDeclaration.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTModuleDeclaration.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchExpression.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchStatement.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTSynchronizedStatement.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AbstractTypeDeclaration.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UnitTestShouldIncludeAssertRule.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/design/CouplingBetweenObjectsRule.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/design/ExcessiveImportsRule.java
    M 
pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/internal/AbstractJavaCounterCheckRule.java
    M pmd-java/src/main/javacc/Java.jjt
    M pmd-java/src/main/resources/category/java/codestyle.xml
    M pmd-java/src/main/resources/category/java/design.xml
    M pmd-java/src/main/resources/category/java/multithreading.xml
    M pmd-java/src/main/resources/rulesets/java/quickstart.xml
    A 
pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/multithreading/OverridingThreadRunTest.java
    M 
pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTAnonymousClassTest.kt
    M 
pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTClassDeclarationTest.kt
    M 
pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTModuleDeclarationTest.kt
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/AbstractClassWithoutAbstractMethod.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/ExhaustiveSwitchHasDefault.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/ImplicitFunctionalInterface.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/JUnit5TestShouldBePackagePrivate.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/NonExhaustiveSwitch.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnitTestShouldIncludeAssert.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedAssignment.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/AtLeastOneConstructor.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/AvoidDollarSigns.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/ClassNamingConventions.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/CommentDefaultAccessModifier.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/ControlStatementBraces.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/EmptyControlStatement.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/LocalHomeNamingConvention.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/LocalInterfaceSessionNamingConvention.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/NoPackage.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/ShortClassName.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/TooManyStaticImports.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/AbstractClassWithoutAnyMethod.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/ClassWithOnlyPrivateConstructorsShouldBeFinal.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/CouplingBetweenObjects.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/CyclomaticComplexity.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/DataClass.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/ExcessiveImports.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/ExcessiveParameterList.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/ExcessivePublicCount.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/GodClass.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/NcssCount.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/PublicMemberInNonPublicType.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/SwitchDensity.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/TooManyFields.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/TooManyMethods.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/UseUtilityClass.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/documentation/xml/CommentRequired.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/AvoidCatchingGenericException.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/FinalizeDoesNotCallSuperFinalize.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/MissingSerialVersionUID.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/MissingStaticMethodInNonInstantiatableClass.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/SingleMethodSingleton.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/TestClassWithoutTestCases.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/multithreading/xml/AvoidSynchronizedStatement.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/multithreading/xml/DoNotUseThreads.xml
    A 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/multithreading/xml/OverridingThreadRun.xml
    M 
pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/performance/xml/TooFewBranchesForSwitch.xml
    M pmd-javascript/pom.xml
    M pmd-jsp/pom.xml
    M pmd-julia/pom.xml
    M pmd-kotlin/pom.xml
    M pmd-kotlin/src/main/antlr4/net/sourceforge/pmd/lang/kotlin/ast/Kotlin.g4
    M 
pmd-kotlin/src/main/antlr4/net/sourceforge/pmd/lang/kotlin/ast/KotlinLexer.g4
    M 
pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java
    M 
pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/LanguageVersionTest.java
    M 
pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/ast/BaseKotlinTreeDumpTest.java
    A 
pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/ast/KotlinParserMultiLineStringTest.java
    M 
pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/ast/KotlinParserTests.java
    A 
pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/ast/KotlinParserThisReceiverTest.java
    M 
pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/ast/KotlinParsingHelper.java
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringExprSplitting.kt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringExprSplitting.txt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringExpressions.kt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringExpressions.txt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringRefSplitting.kt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringRefSplitting.txt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringRefs.kt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/MultiLineStringRefs.txt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/SimpleExpressions.kt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/SingleDollarExprNoPrefix.kt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/SingleDollarExprNoPrefix.txt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/SingleDollarRefNoPrefix.kt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/SingleDollarRefNoPrefix.txt
    A 
pmd-kotlin/src/test/resources/net/sourceforge/pmd/lang/kotlin/ast/testdata/ThisReceiver.kt
    M pmd-lang-test/pom.xml
    M 
pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/test/ast/AstMatcherDslAdapter.kt
    M pmd-languages-deps/pom.xml
    M pmd-lua/pom.xml
    M pmd-matlab/pom.xml
    M pmd-modelica/pom.xml
    M pmd-objectivec/pom.xml
    M pmd-perl/pom.xml
    M pmd-php/pom.xml
    M pmd-plsql/pom.xml
    M pmd-python/pom.xml
    M pmd-ruby/pom.xml
    M pmd-rust/pom.xml
    M pmd-scala-modules/pmd-scala-common/pom.xml
    M pmd-scala-modules/pmd-scala_2.12/pom.xml
    M pmd-scala-modules/pmd-scala_2.13/pom.xml
    M pmd-swift/pom.xml
    M pmd-test-schema/pom.xml
    M pmd-test/pom.xml
    M pmd-test/src/main/java/net/sourceforge/pmd/test/RuleTst.java
    M pmd-tsql/pom.xml
    M pmd-velocity/pom.xml
    M pmd-visualforce/pom.xml
    M pmd-xml/pom.xml
    M pom.xml

  Log Message:
  -----------
  Merge branch 'main' into StackOverflowError-fix


  Commit: 7c96abe65d9faf488e1f7b8a6069940169975c66
      https://github.com/pmd/pmd/commit/7c96abe65d9faf488e1f7b8a6069940169975c66
  Author: Andreas Dangel <[email protected]>
  Date:   2026-05-07 (Thu, 07 May 2026)

  Changed paths:
    M docs/pages/release_notes.md

  Log Message:
  -----------
  [doc] Update release notes (#5721, #6553)


  Commit: 81d92e0a10360ab59a05e801fe226d9f890ceb89
      https://github.com/pmd/pmd/commit/81d92e0a10360ab59a05e801fe226d9f890ceb89
  Author: Andreas Dangel <[email protected]>
  Date:   2026-05-07 (Thu, 07 May 2026)

  Changed paths:
    M docs/pages/release_notes.md
    M pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/TypeOps.java
    M 
pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/TypeOpsTest.kt

  Log Message:
  -----------
  [java] Fix StackOverflowError in TypeOps projection of cyclic captured type 
vars (#6553)


Compare: https://github.com/pmd/pmd/compare/7ca791fd5891...81d92e0a1036

To unsubscribe from these emails, change your notification settings at 
https://github.com/pmd/pmd/settings/notifications


_______________________________________________
Pmd-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pmd-commits

Reply via email to