Title: Inconsistent Function Invocation Qualified Names · Issue #269 · liquid-java/liquidjava · GitHub
Open Graph Title: Inconsistent Function Invocation Qualified Names · Issue #269 · liquid-java/liquidjava
X Title: Inconsistent Function Invocation Qualified Names · Issue #269 · liquid-java/liquidjava
Description: Description Refined class ghost invocations are not always assigned consistent qualified names. When a ghost function is called on an instance of a refined class, the invocation should use the qualified name associated with that instance...
Open Graph Description: Description Refined class ghost invocations are not always assigned consistent qualified names. When a ghost function is called on an instance of a refined class, the invocation should use the qual...
X Description: Description Refined class ghost invocations are not always assigned consistent qualified names. When a ghost function is called on an instance of a refined class, the invocation should use the qual...
Opengraph URL: https://github.com/liquid-java/liquidjava/issues/269
X: @github
Domain: Github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Inconsistent Function Invocation Qualified Names","articleBody":"\n**Description**\n\nRefined class ghost invocations are not always assigned consistent qualified names.\n\nWhen a ghost function is called on an instance of a refined class, the invocation should use the qualified name associated with that instance's class. However, in some cases, LiquidJava uses the qualified name of the class where the instance is being used instead.\n\nBecause of this, equivalent ghost invocations may be represented with different qualified names. As a workaround for the `VCFunctionSubstitution`, the `FunctionInvocation.equals()` currently compares only simple names, but this can be problematic.\n\n**Minimal reproducer**\n\n```java\npublic class Example {\n public static void main(String[] args) {\n Stack\u003cInteger\u003e stack = new Stack\u003c\u003e(); // java.util.Stack.size()\n if (stack.empty()) { // com.example.Example.size()\n stack.push(1); // java.util.Stack.size()\n }\n stack.pop(); // java.util.Stack.size()\n }\n}\n```\n\n**Environment**\n\n* LiquidJava version / commit: `0.0.27`\n* Java version: `20`\n* OS: macOS 26\n","author":{"url":"https://github.com/rcosta358","@type":"Person","name":"rcosta358"},"datePublished":"2026-06-26T15:43:49.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/269/liquidjava/issues/269"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:8dc1e6e6-43d8-7397-43cd-c563323c9662 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B812:C4AF2:145D4AD:1B83E9E:6A62D343 |
| html-safe-nonce | fc83abbc9ea5c2a8f26028de90e4bb97d3e5d93e9ea572764decc3f19f4854c4 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCODEyOkM0QUYyOjE0NUQ0QUQ6MUI4M0U5RTo2QTYyRDM0MyIsInZpc2l0b3JfaWQiOiI3MTg5MTc2MDI1NzQ2NjkwODgzIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 482072ca151f27f0c2aca8c4735ea8e22aff5606caf042e276c78ca35d2f2afd |
| hovercard-subject-tag | issue:4753248077 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/liquid-java/liquidjava/269/issue_layout |
| twitter:image | https://opengraph.githubassets.com/587d0fec095c5aee59142d5e56398e127e823901c6a7f10e8872cb64eda02736/liquid-java/liquidjava/issues/269 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/587d0fec095c5aee59142d5e56398e127e823901c6a7f10e8872cb64eda02736/liquid-java/liquidjava/issues/269 |
| og:image:alt | Description Refined class ghost invocations are not always assigned consistent qualified names. When a ghost function is called on an instance of a refined class, the invocation should use the qual... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | rcosta358 |
| hostname | github.com |
| expected-hostname | github.com |
| None | df33b1b61ee7b9a0af988199bfc3503c9c1acafb1f1d40e1f140ea7c84f890dd |
| turbo-cache-control | no-preview |
| go-import | github.com/liquid-java/liquidjava git https://github.com/liquid-java/liquidjava.git |
| octolytics-dimension-user_id | 242831829 |
| octolytics-dimension-user_login | liquid-java |
| octolytics-dimension-repository_id | 258218369 |
| octolytics-dimension-repository_nwo | liquid-java/liquidjava |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 258218369 |
| octolytics-dimension-repository_network_root_nwo | liquid-java/liquidjava |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | d41cd1bdb290013455c0ac430fa755621733f5eb |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width