Ask the server about superclasses and retire the lexer - #56
Merged
PiotrRogulski merged 1 commit intoSep 17, 2026
Conversation
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 09:31
4d90018 to
ab5df44
Compare
This was referenced Sep 17, 2026
PiotrRogulski
added this pull request to stack #57
September 17, 2026 09:35
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 10:17
ab5df44 to
9813eab
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 10:37
9813eab to
f0c2e2d
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 10:39
f0c2e2d to
fbc4d81
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 10:40
fbc4d81 to
de49abd
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 11:43
de49abd to
d8b64db
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 11:44
d8b64db to
1512324
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 11:50
1512324 to
2600ce9
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 11:53
2600ce9 to
2efe7d9
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 11:56
2efe7d9 to
01e313b
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 12:08
01e313b to
63c1764
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 12:31
63c1764 to
a8c42c1
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 12:38
a8c42c1 to
543645f
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 12:40
543645f to
1662dc1
Compare
PiotrRogulski
commented
Sep 17, 2026
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 12:56
1662dc1 to
db83824
Compare
PiotrRogulski
commented
Sep 17, 2026
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 13:03
db83824 to
6a44db4
Compare
PiotrRogulski
commented
Sep 17, 2026
PiotrRogulski
left a comment
Member
Author
There was a problem hiding this comment.
Please go over all your comments here again, there's so much prose and I don't believe it's all actually needed
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 13:15
6a44db4 to
fb08fa2
Compare
PiotrRogulski
commented
Sep 17, 2026
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 13:26
fb08fa2 to
8f0de6a
Compare
PiotrRogulski
marked this pull request as ready for review
September 17, 2026 13:30
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 19:32
8f0de6a to
93beddc
Compare
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 19:48
93beddc to
3467258
Compare
Komoszek
reviewed
Sep 17, 2026
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 20:22
3467258 to
ef08595
Compare
Komoszek
reviewed
Sep 17, 2026
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 20:42
ef08595 to
7b269c2
Compare
Komoszek
reviewed
Sep 17, 2026
Whether removing a class's last constructor compiles depends on its superclass having a zero-argument unnamed constructor. Resolve the superclass with dart/textDocument/super and read its constructors from that file's document symbols, instead of scanning the dead constructor for `super.`/`super(`, which also blocked every StatelessWidget on super.key. The State<Widget> pairing and header declarations move to selection ranges too; lexing.dart keeps only the comment blanking the directive rewriting needs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0146xh6qZsHDegsCAoRBEqwz
PiotrRogulski
force-pushed
the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
from
September 17, 2026 20:50
7b269c2 to
2027b97
Compare
Komoszek
approved these changes
Sep 17, 2026
PiotrRogulski
deleted the
claude/quirky-hawking-jdfvsx-4-superclasses
branch
September 17, 2026 20:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
After this, ciach reads no Dart syntax itself; only comment blanking remains, for the directive rewriting after
--remove.SuperclassChecks:dart/textDocument/supernames the class's superclass; that file'sdocumentSymbol(works unopened, SDK included) gives its constructors' parameter lists. The class's last constructor is removable when the superclass has no constructors or an unnamed one with only optional parameters. ReplacesctorForwardsSuper, which scanned forsuper./super(.isStatePairingReference: sole type argument ofState<…>in anextendsclause, from the node chain; replaces two regexes.isDeclaredInTypeHeader: a header declaration's chain reaches the type's node before any body node.lexing.dartloses the tokenizer and becomescomment_stripping.dart;SourceIndexloses its token API.Behavior: a dead sole constructor of a
StatelessWidgetsubclass is now removable, not report-only. AState<Foo>type annotation outside anextendsclause counts as a use.🤖 Generated with Claude Code
https://claude.ai/code/session_0146xh6qZsHDegsCAoRBEqwz