Skip to content

Fix: issue #4974 How to detect array.length ValueDeclaration#5000

Merged
jlerbsc merged 2 commits into
javaparser:masterfrom
jlerbsc:master
May 2, 2026
Merged

Fix: issue #4974 How to detect array.length ValueDeclaration#5000
jlerbsc merged 2 commits into
javaparser:masterfrom
jlerbsc:master

Conversation

@jlerbsc

@jlerbsc jlerbsc commented Apr 30, 2026

Copy link
Copy Markdown
Collaborator

Fixes #4974 .

array.length is the only synthetic pseudo-field defined by the JLS (§10.7). It is a singleton with a fixed name and a fixed type (int), so a dedicated interface would carry no meaningful contract beyond the flag itself. The existing codebase already follows this lighter approach: isVariable() in ResolvedDeclaration has no companion ResolvedVariableDeclaration interface. Introducing an empty marker interface just to be symmetric with isField() / isEnumConstant() would be over-engineering for a one-off case.

The fix is therefore:
Add default boolean isArrayLength() { return false; } to ResolvedDeclaration
Override it to return true inside ArrayLengthValueDeclaration

If more extensibility were needed in the future — for instance, to expose getArrayType() to retrieve the component type of the backing array — the right move would be to introduce a ResolvedArrayLengthDeclaration interface at that point. Because all new methods on ResolvedDeclaration are default, and because ArrayLengthValueDeclaration already implements ResolvedValueDeclaration, that refactor could be done without any breaking change.

@codecov

codecov Bot commented May 2, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 58.694%. Comparing base (2146cfc) to head (997d0ce).
⚠️ Report is 29 commits behind head on master.

Files with missing lines Patch % Lines
...r/resolution/declarations/ResolvedDeclaration.java 0.000% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@               Coverage Diff               @@
##              master     #5000       +/-   ##
===============================================
+ Coverage     58.657%   58.694%   +0.036%     
- Complexity      2564      2592       +28     
===============================================
  Files            699       700        +1     
  Lines          40121     40188       +67     
  Branches        7314      7323        +9     
===============================================
+ Hits           23534     23588       +54     
- Misses         13620     13630       +10     
- Partials        2967      2970        +3     
Flag Coverage Δ
AlsoSlowTests 58.694% <50.000%> (+0.036%) ⬆️
javaparser-core 58.694% <50.000%> (+0.036%) ⬆️
javaparser-symbol-solver 58.694% <50.000%> (+0.036%) ⬆️
jdk-10 58.266% <50.000%> (+0.039%) ⬆️
jdk-11 58.265% <50.000%> (+0.037%) ⬆️
jdk-12 58.265% <50.000%> (+0.037%) ⬆️
jdk-13 58.265% <50.000%> (+0.037%) ⬆️
jdk-14 58.494% <50.000%> (+0.034%) ⬆️
jdk-15 58.496% <50.000%> (+0.036%) ⬆️
jdk-16 58.472% <50.000%> (+0.036%) ⬆️
jdk-17 58.621% <50.000%> (+0.036%) ⬆️
jdk-18 58.621% <50.000%> (+0.036%) ⬆️
jdk-8 58.102% <50.000%> (+0.040%) ⬆️
jdk-9 58.264% <50.000%> (+0.039%) ⬆️
macos-latest 58.669% <50.000%> (+0.036%) ⬆️
ubuntu-latest 58.664% <50.000%> (+0.036%) ⬆️
windows-latest 58.676% <50.000%> (+0.036%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...thub/javaparser/symbolsolver/JavaSymbolSolver.java 68.421% <100.000%> (+0.139%) ⬆️
...r/resolution/declarations/ResolvedDeclaration.java 0.000% <0.000%> (ø)

... and 3 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 11a99ae...997d0ce. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jlerbsc jlerbsc merged commit 5f7179f into javaparser:master May 2, 2026
62 of 64 checks passed
@jlerbsc jlerbsc added this to the next release milestone May 3, 2026
@jlerbsc jlerbsc added the PR: Fixed A PR that offers a fix or correction label May 3, 2026
wadoon added a commit to jmltoolkit/jmlparser that referenced this pull request May 10, 2026
* tag 'javaparser-parent-3.28.1': (45 commits)
  [maven-release-plugin] prepare release javaparser-parent-3.28.1
  update readme
  Update changelog
  chore(deps): update codecov/codecov-action action to v6
  fix(grammar): allow empty component list in RecordPattern
  fix(deps): update dependency org.javassist:javassist to v3.31.0-ga (javaparser#5006)
  fix(deps): update dependency org.checkerframework:checker-qual to v3.55.1 (javaparser#5004)
  fix(deps): update dependency com.google.guava:guava to v33.6.0-jre (javaparser#5003)
  fix(deps): update dependency org.junit:junit-bom to v5.14.4 (javaparser#5002)
  chore(deps): update dependency maven to v3.9.15 (javaparser#5001)
  fix(deps): update byte-buddy.version to v1.18.8-jdk5 (javaparser#4995)
  chore(deps): update codecov/codecov-action action to v5.5.4 (javaparser#4993)
  Fix: issue javaparser#4974 How to detect array.length ValueDeclaration (javaparser#5000)
  chore(deps): update codecov/codecov-action action to v5.5.3 (javaparser#4990)
  chore(deps): update dependency maven to v3.9.14 (javaparser#4988)
  chore(deps): update dependency maven to v3.9.13 (javaparser#4983)
  chore(deps): update dependency org.apache.maven.plugins:maven-resources-plugin to v3.5.0 (javaparser#4981)
  fix(deps): update dependency org.checkerframework:checker-qual to v3.54.0 (javaparser#4980)
  fix(deps): update byte-buddy.version to v1.18.7-jdk5 (javaparser#4979)
  fix(deps): update byte-buddy.version to v1.18.6-jdk6-jdk5 (javaparser#4978)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: Fixed A PR that offers a fix or correction

Projects

None yet

Development

Successfully merging this pull request may close these issues.

How to detect array.length ValueDeclaration?

1 participant