Skip to content

Scala parser: eliminate J.Unknown, add S types for Scala-specific constructs#7375

Merged
jkschneider merged 1 commit intomainfrom
scala-parser-no-unknown
Apr 14, 2026
Merged

Scala parser: eliminate J.Unknown, add S types for Scala-specific constructs#7375
jkschneider merged 1 commit intomainfrom
scala-parser-no-unknown

Conversation

@jkschneider
Copy link
Copy Markdown
Member

@jkschneider jkschneider commented Apr 14, 2026

Summary

  • visitUnknown now throws UnsupportedOperationException instead of producing J.Unknown — gaps surface immediately as test failures
  • Added S.StatementExpression (replaces S.BlockExpression) — wraps any J to make it both Statement and Expression, following K.StatementExpression pattern
  • Added S.TypeAscription — proper S type for expr: Type (not J.TypeCast)
  • Added S.TypeAlias — type alias declarations (type Foo = Bar)
  • Added S.PatternDefinition — destructuring declarations, enum cases, given definitions
  • Curried parameter lists modeled as compositional J.Lambda chain with Curried marker
  • OmitBraces marker on blocks without source braces; printer skips { }
  • CLAUDE.md updated: J.Unknown is forbidden, markers must not carry LST elements

New parser handlers

  • ParsedTry, This, InterpolatedString, SymbolLit, NamedArg, ByNameTypeTree, TypeBoundsTree, TypeApply (classOf), Alternative catch patterns, Bind (at-binding), match case guards

Fixes

  • Template matching: preserve /*__p0__*/ comment in method name prefix for parameter detection
  • Space before : in given declarations preserved via varargs field
  • Block arguments: extract lambda from J.Return wrapper; OmitBraces on braceless blocks
  • Procedure syntax body re-parsing for Scala 3 compiler desugaring
  • Match case guard whitespace preservation
  • Multi-statement case body printing

Test plan

  • 433 tests, 0 failures, 0 skipped

@jkschneider jkschneider force-pushed the scala-parser-no-unknown branch from ddfef2c to d70a6da Compare April 14, 2026 19:53
@jkschneider jkschneider merged commit 703dac8 into main Apr 14, 2026
1 check passed
@jkschneider jkschneider deleted the scala-parser-no-unknown branch April 14, 2026 20:27
@github-project-automation github-project-automation Bot moved this from In Progress to Done in OpenRewrite Apr 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

1 participant