java-functional-lsp 0.3.0__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.claude-plugin/plugin.json +1 -1
  2. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/workflows/vscode-ext.yml +1 -1
  3. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/PKG-INFO +1 -1
  4. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/vscode/package.json +5 -3
  5. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/pyproject.toml +1 -1
  6. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/__init__.py +1 -1
  7. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/analyzers/mutation_checker.py +7 -0
  8. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/CODEOWNERS +0 -0
  9. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  10. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  11. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  12. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/SECURITY.md +0 -0
  13. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/dependabot.yml +0 -0
  14. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/release-drafter.yml +0 -0
  15. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/workflows/publish.yml +0 -0
  16. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/workflows/release-drafter.yml +0 -0
  17. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/workflows/stale.yml +0 -0
  18. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/workflows/test.yml +0 -0
  19. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.github/workflows/update-homebrew.yml +0 -0
  20. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/.gitignore +0 -0
  21. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/CONTRIBUTING.md +0 -0
  22. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/LICENSE +0 -0
  23. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/README.md +0 -0
  24. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/SKILL.md +0 -0
  25. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/commands/lint-java.md +0 -0
  26. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/intellij/README.md +0 -0
  27. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/intellij/lsp4ij-template.json +0 -0
  28. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/vscode/.vscodeignore +0 -0
  29. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/vscode/README.md +0 -0
  30. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/vscode/package-lock.json +0 -0
  31. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/vscode/src/extension.ts +0 -0
  32. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/editors/vscode/tsconfig.json +0 -0
  33. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/hooks/hooks.json +0 -0
  34. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/hooks/java_linter_reminder.py +0 -0
  35. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/scripts/ensure-lsp.sh +0 -0
  36. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/scripts/generate-formula.py +0 -0
  37. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/analyzers/__init__.py +0 -0
  38. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/analyzers/base.py +0 -0
  39. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/analyzers/exception_checker.py +0 -0
  40. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/analyzers/null_checker.py +0 -0
  41. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/analyzers/spring_checker.py +0 -0
  42. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/cli.py +0 -0
  43. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/proxy.py +0 -0
  44. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/src/java_functional_lsp/server.py +0 -0
  45. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/__init__.py +0 -0
  46. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/conftest.py +0 -0
  47. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/test_cli.py +0 -0
  48. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/test_config.py +0 -0
  49. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/test_exception_checker.py +0 -0
  50. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/test_mutation_checker.py +0 -0
  51. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/test_null_checker.py +0 -0
  52. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/test_proxy.py +0 -0
  53. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/tests/test_spring_checker.py +0 -0
  54. {java_functional_lsp-0.3.0 → java_functional_lsp-0.3.1}/uv.lock +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "java-functional-lsp",
3
3
  "description": "Java LSP with functional programming rules enforcement — null safety, immutability, no exceptions, Spring best practices. Wraps jdtls for full Java language support.",
4
- "version": "0.3.0"
4
+ "version": "0.3.1"
5
5
  }
@@ -32,7 +32,7 @@ jobs:
32
32
  run: npm run compile
33
33
 
34
34
  - name: Package VSIX
35
- run: npx vsce package --no-dependencies
35
+ run: npx vsce package
36
36
 
37
37
  - name: Upload VSIX artifact
38
38
  uses: actions/upload-artifact@v4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: java-functional-lsp
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Java LSP server enforcing functional programming best practices — null safety, immutability, no exceptions
5
5
  Project-URL: Homepage, https://github.com/aviadshiber/java-functional-lsp
6
6
  Project-URL: Repository, https://github.com/aviadshiber/java-functional-lsp
@@ -2,7 +2,7 @@
2
2
  "name": "java-functional-lsp",
3
3
  "displayName": "Java Functional LSP",
4
4
  "description": "Java LSP server enforcing functional programming best practices — null safety, immutability, no exceptions",
5
- "version": "0.3.0",
5
+ "version": "0.3.1",
6
6
  "publisher": "aviadshiber",
7
7
  "license": "MIT",
8
8
  "engines": {
@@ -50,8 +50,9 @@
50
50
  "url": "https://github.com/aviadshiber/java-functional-lsp/issues"
51
51
  },
52
52
  "scripts": {
53
- "compile": "tsc -p ./",
54
- "watch": "tsc -watch -p ./",
53
+ "compile": "npm run esbuild",
54
+ "esbuild": "esbuild src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node",
55
+ "watch": "npm run esbuild -- --watch",
55
56
  "package": "vsce package"
56
57
  },
57
58
  "dependencies": {
@@ -61,6 +62,7 @@
61
62
  "@types/node": "^18.19.130",
62
63
  "@types/vscode": "^1.75.0",
63
64
  "@vscode/vsce": "^3.0.0",
65
+ "esbuild": "^0.27.4",
64
66
  "typescript": "^5.0.0"
65
67
  }
66
68
  }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "java-functional-lsp"
7
- version = "0.3.0"
7
+ version = "0.3.1"
8
8
  description = "Java LSP server enforcing functional programming best practices — null safety, immutability, no exceptions"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -1,3 +1,3 @@
1
1
  """java-functional-lsp: A Java LSP server enforcing functional programming best practices."""
2
2
 
3
- __version__ = "0.3.0"
3
+ __version__ = "0.3.1"
@@ -139,6 +139,13 @@ class MutationChecker:
139
139
  if not has_ancestor(node, _METHOD_TYPES):
140
140
  continue
141
141
 
142
+ # Skip this.field = ... in constructors (field initialization, not reassignment)
143
+ left = node.child_by_field_name("left")
144
+ if left and left.type == "field_access" and has_ancestor(node, {"constructor_declaration"}):
145
+ receiver = left.child_by_field_name("object")
146
+ if receiver and receiver.type == "this":
147
+ continue
148
+
142
149
  diagnostics.append(
143
150
  Diagnostic(
144
151
  line=node.start_point[0],