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