Perform same exception handling for every implementation of PklRootNode.execute().
Avoid code duplication.
Changes:
Change PklRootNode.execute() to be a final method that performs exception handling and calls abstract method executeImpl(), which is implemented by subclasses.
Remove executeBody() methods, which served a similar purpose but were more limited.
Remove duplicate exception handling code.
Result:
More reliable exception handling. This should fix known problems such as misclassifying stack overflows as internal errors and displaying errors without a stack trace.
Less code duplication.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/apple/pkl/pull/837
**Author:** [@odenix](https://github.com/odenix)
**Created:** 12/2/2024
**Status:** ✅ Merged
**Merged:** 12/19/2024
**Merged by:** [@bioball](https://github.com/bioball)
**Base:** `main` ← **Head:** `rootnode-exception`
---
### 📝 Commits (1)
- [`f6a3ee6`](https://github.com/apple/pkl/commit/f6a3ee64496b51588e7aa0de16eb2b8859838248) Fix exception handling of PklRootNode's
### 📊 Changes
**16 files changed** (+71 additions, -143 deletions)
<details>
<summary>View changed files</summary>
📝 `pkl-core/src/main/java/org/pkl/core/ast/MemberNode.java` (+0 -5)
📝 `pkl-core/src/main/java/org/pkl/core/ast/PklRootNode.java` (+10 -2)
📝 `pkl-core/src/main/java/org/pkl/core/ast/SimpleRootNode.java` (+2 -2)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/FunctionNode.java` (+14 -29)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/ListingOrMappingTypeCastNode.java` (+2 -9)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/LocalTypedPropertyNode.java` (+6 -20)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/ModuleNode.java` (+2 -2)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/ObjectMethodNode.java` (+1 -1)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/PropertyTypeNode.java` (+12 -26)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/SharedMemberNode.java` (+2 -2)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/TypeCheckedPropertyNode.java` (+3 -3)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/TypedPropertyNode.java` (+2 -2)
📝 `pkl-core/src/main/java/org/pkl/core/ast/member/UntypedObjectMemberNode.java` (+2 -2)
📝 `pkl-core/src/main/java/org/pkl/core/ast/repl/ResolveClassMemberNode.java` (+1 -1)
📝 `pkl-core/src/main/java/org/pkl/core/ast/type/IdentityMixinNode.java` (+5 -19)
📝 `pkl-core/src/main/java/org/pkl/core/stdlib/benchmark/MicrobenchmarkNodes.java` (+7 -18)
</details>
### 📄 Description
Motivation:
- Perform same exception handling for every implementation of PklRootNode.execute().
- Avoid code duplication.
Changes:
- Change PklRootNode.execute() to be a final method that performs exception handling and calls abstract method executeImpl(), which is implemented by subclasses.
- Remove executeBody() methods, which served a similar purpose but were more limited.
- Remove duplicate exception handling code.
Result:
- More reliable exception handling. This should fix known problems such as misclassifying stack overflows as internal errors and displaying errors without a stack trace.
- Less code duplication.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/apple/pkl/pull/837
Author: @odenix
Created: 12/2/2024
Status: ✅ Merged
Merged: 12/19/2024
Merged by: @bioball
Base:
main← Head:rootnode-exception📝 Commits (1)
f6a3ee6Fix exception handling of PklRootNode's📊 Changes
16 files changed (+71 additions, -143 deletions)
View changed files
📝
pkl-core/src/main/java/org/pkl/core/ast/MemberNode.java(+0 -5)📝
pkl-core/src/main/java/org/pkl/core/ast/PklRootNode.java(+10 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/SimpleRootNode.java(+2 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/member/FunctionNode.java(+14 -29)📝
pkl-core/src/main/java/org/pkl/core/ast/member/ListingOrMappingTypeCastNode.java(+2 -9)📝
pkl-core/src/main/java/org/pkl/core/ast/member/LocalTypedPropertyNode.java(+6 -20)📝
pkl-core/src/main/java/org/pkl/core/ast/member/ModuleNode.java(+2 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/member/ObjectMethodNode.java(+1 -1)📝
pkl-core/src/main/java/org/pkl/core/ast/member/PropertyTypeNode.java(+12 -26)📝
pkl-core/src/main/java/org/pkl/core/ast/member/SharedMemberNode.java(+2 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/member/TypeCheckedPropertyNode.java(+3 -3)📝
pkl-core/src/main/java/org/pkl/core/ast/member/TypedPropertyNode.java(+2 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/member/UntypedObjectMemberNode.java(+2 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/repl/ResolveClassMemberNode.java(+1 -1)📝
pkl-core/src/main/java/org/pkl/core/ast/type/IdentityMixinNode.java(+5 -19)📝
pkl-core/src/main/java/org/pkl/core/stdlib/benchmark/MicrobenchmarkNodes.java(+7 -18)📄 Description
Motivation:
Changes:
Result:
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.