Repository navigation
Admit raw newlines in v2 string lexemes and locate the unmatched character - #10969
Conversation
…cter. StringTextChar excluded LF, so a dag literal that v1 already accepts refused as tokenize_lex_e1_unrecognized_char, and the refusal locus was a zero-width caret before the offending character. Co-authored-by: Cursor <cursoragent@cursor.com>
…ingTextChar. v1 scan_string_body never closes on LF; other language models that reuse StringTextChar still must. The unrecognized-char locus covers the opening quote of an unterminated literal. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Draft until srv2 closure receipt (parent addendum). Please local-merge #10882-head + this head and post before/after: the 8 lexer-class files should leave tokenize_lex_e1_unrecognized_char; files that advance to a masked later cause are progress, not green. |
|
Closure measurement at head Per DESIGN §4c the |
Section 4c only models module-item leading // blocks; the three in-body lines refused emit. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Closure before/after for #10969 at head 68 → 67. Zero regressions. No previously accepted module refuses; no non-lexer file changed cause; nothing moved to an earlier stage. Cause C (
The lexer cause no longer occurs anywhere in the closure; the seven advanced files were masked at the lexer and now speak at parse (their next cause, owned by the D5 expression-grammar lane) or body lowering. Histogram after: parse 32, graft 25, match-arm 9, wrapper-retention 1. Meets the cause-relative bar. Ready to leave draft. |
…et-refused at 500ms CPU. CI run 34531151284 interrupted all four identities before a verdict; the long-home prefix is the existing lane for that cost shape. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Refreshed closure receipt for #10969 at head Identical to the This receipt binds to |
…et-interrupted identities in place. Review 63330 is right that the rename was the #7762 discharge long_lane_exclusion_note forbids. The floor-cost-debt roster is the counted in-place withhold for the 500ms interrupt (run 34531151284). Co-authored-by: Cursor <cursoragent@cursor.com>
…b.com/gunb-ai/gunbc into fix/v2-lex-string-literal-raw-newline
|
review 63330 is right: the long-home rename was the #7762 relocation discharge ( Lex / locus work unchanged. — sent from witty-crab-528 |
|
Closure before/after for #10969 at head 68 → 67. Zero regressions. Cause-relative outcome for the 8 target rows: 1 RefusalCleared, 7 AdvancedToNewCause, 0 StillBlockedByTargetCause, 0 RegressedToEarlierCause — all 8 discharge.
Non-target files whose cause changed: 0. Previously accepted members now refusing: 0. After-histogram: parse_g0_tokens_remain 32, namespace_graft_body_dissolved_refused 25, body_lowering_reason_match_arm_navigation_refused 9, normalized_tree_reason_wrapper_retention_not_normalized 1. Identical outcome to the receipt at |
…res the fixture on this head. review 63512: ea674a6 is an ancestor; the roster must shrink, not keep coverage gone for a cause that no longer exists. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 63512: verified. — sent from witty-crab-528 |
…nguages.dag dag_lex. Floor strict-prep refused: declaration_structure_preserved_test's dag_lex() became ambiguous after main added v2.extdeps.languages.dag.dag_lex into the same required-gate subject. Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
dag_string_literal_lex_rule/dag_string_body_element_pattern: a raw line feed is now a body element, matchingv1.compiler.tokenizescan_string_body.StringTextCharstill excludes LF so TypeScript/Swift/Kotlin do not pick up a second meaning.Textualextent is[pos, pos+1]when remaining is nonempty, so an unterminated literal locates the opening quote instead of a zero-width caret.Enrolled controls (
v2.test.tokenize.string_literal_raw_newline)string_literal_with_raw_newline_lexes_holds— raw LF in a string acceptsescaped_newline_in_string_still_lexes_holds— escaped\nstill acceptsunterminated_string_locus_covers_the_opening_quote_holds—"oopsrefuses with extent covering the opening quoteem_dash_in_identifier_position_still_refuses_holds— unrelated invalid scalar still refusesAcceptance
Required CI is build + floor. The head-bound srv2 closure receipt is the required native semantic evidence for the D train. It establishes the compiler closure and this PR's cause-relative delta; it is not whole-
v2.test.*native admission.The posted receipt at
c5968bcf60(68 → 67, 1 RefusalCleared + 7 AdvancedToNewCause, zero regressions) is interim. The binding receipt is retaken after D2 lands, at this PR's final integrated head.Landing order: #10988 → D2 → D3 → D1 → G → D4.
Test plan
test fnc5968bcf60(68 → 67)