Skip to content

New open syntax with paths and renaming - #631

Open
LPTK wants to merge 10 commits into
hkust-taco:hkmc2from
LPTK:codex/dotted-selective-opens
Open

LPTK wants to merge 10 commits into
hkust-taco:hkmc2from
LPTK:codex/dotted-selective-opens

Conversation

@LPTK

@LPTK LPTK commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

For consistency, we should now write

open M.{ a, b, c }

rather than

open M { a, b, c }

The indentation form is still supported, with the aded ..

Paths are now also supported; eg:

module Foo {
  val a = 1
  val b = 2
  module Bar {
    val c = 3
    val d = 4
  }
}

open Foo.{ a, b, Bar.{ c, d } }

open Foo.
  a
  b
  Bar.
    c, d

Moreover, we now support renaming: m as n renames member m and m as _ hides it.

open M.m as n

open M.{ *, m as n, o as _ }

import "./M.mls"
open M as N // add an alias N to module M

// If we don't want M to be a visible name at all, we can use instead the already-supported:
import "./M.mls" as N

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The change spans parser precedence, layout parsing, version gating, resolution, diagnostics, and hundreds of golden tests, so complete cross-platform suite validation and human review are needed.

No open issues 🎉

What changed in this PR

This pull request introduces dotted selective open syntax for MLscript, including nested paths, indentation-based groups, wildcard selections, aliases, and hidden members. It updates parser and language-version behavior, documents the new forms, and migrates broad compiler and runtime test coverage.

Changes:

  • Adds parsing and compatibility support for dotted, nested, indented, wildcard, and aliased opens.
  • Introduces language-version warnings for legacy open syntax.
  • Updates documentation, diagnostics, and extensive test fixtures for the new syntax.
File Description
hkmc2/​shared/​src/​test/​mlscript/​ups/​UpsBugsBacklog.mls Migrates annotation open syntax to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​TransformFree.mls Migrates annotation open syntax to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​transformation/​TermIdentity.mls Migrates selective annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​transformation/​PatternIdentity.mls Migrates selective annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​transformation/​BindingLess.mls Migrates module and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​syntax/​WrongArity.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​syntax/​PatternBody.mls Migrates wildcard stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​syntax/​InterestingPatterns.mls Migrates selective option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​syntax/​CrossCompilation.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​specialization/​SimpleLiterals.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​specialization/​SimpleList.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​SimpleTransform.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​SimpleConjunction.mls Migrates option and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​regex/​Identifier.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​regex/​EmailAddress.mls Migrates iterator and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​RecursiveTransformations.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​recursion/​SignBox.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​recursion/​NullTree.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​recursion/​NatBox.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​recursion/​LeafEvenOddTree.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​recursion/​BitTree.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​recursion/​BitSeq.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​parametric/​Nullable.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​parametric/​ListLike.mls Migrates annotation and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​parametric/​HigherOrderPattern.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​nondeterminism/​LaRbTree.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​nondeterminism/​EvenOddTree.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​nondeterminism/​BitArithmetic.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​MatchResult.mls Migrates runtime and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​UnsupportedShapes.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​SimpleExample.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​RecursionAlternatives.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​NonCatchAll.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​MoreAlternatives.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​ListFusion.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​IndirectRecursion.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​FixedPointPatterns.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​fixpoint/​Diagnostics.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​TupleSpread.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​Record.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​PrecedenceClimbStackParse.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​HindleyMilner.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​Flatten.mls Migrates annotation and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​Extraction.mls Migrates option and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​EvaluationContext2.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​EvaluationContext.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​DoubleTripleList.mls Migrates annotation and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​DoubleOrSum.mls Migrates annotation, stack, and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​DnfCnf.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​BasicStackParse.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​BasicSeqStackParse.mls Migrates iterator wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​examples/​BadRecStackParse.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ups/​EmptyJunctions.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ups/​BasicStackPatterns.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​syntax/​TupleRest.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​syntax/​Of.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​syntax/​Do.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​SimpleTuple.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​Refinement.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​RecordPattern.mls Migrates option and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​Parameters.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​Literals.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​ConjunctionPattern.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​CompiledQualifiedConstructors.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​CompiledClassPatterns.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​Compilation.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​patterns/​AliasPattern.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​normalization/​UnifyTupleElements.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​normalization/​UnifySubScrutinees.mls Migrates stack and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​normalization/​InheritanceNormalization.mls Migrates example wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​hygiene/​HygienicBindings.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​general/​List.mls Migrates stack and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​examples/​ULC.mls Migrates option and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​examples/​SimpleTree.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​examples/​Permutations.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​examples/​ListFold.mls Migrates stack, option, and string-operation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​examples/​LeftistTree.mls Migrates option and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​examples/​EitherOrBoth.mls Migrates option and string-operation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​ucs/​examples/​BinarySearchTree.mls Migrates option and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​tailrec/​TailRecOpt.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​tailrec/​Simple.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​tailrec/​MultiArgLists.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​tailrec/​Errors.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​syntax/​BackslashApps.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​syntax/​annotations/​Unsupported.mls Migrates string-operation opens and related diagnostics.
hkmc2/​shared/​src/​test/​mlscript/​syntax/​annotations/​Pattern.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​std/​StackTests.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​std/​RenderingTest.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​std/​PrettyPrintTest.mls Migrates rendering opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​std/​MutMapTest.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​std/​LazyArrayTest.mls Migrates lazy-array opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​std/​FingerTreeListTest.mls Migrates finger-tree opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​WrapperResults.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​WildcardUnionInterfaces.mls Migrates wildcard receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​WildcardUnionExposure.mls Updated as part of this pull request.
hkmc2/​shared/​src/​test/​mlscript/​slop/​wasm/​UndefinedRepresentations.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​wasm/​OptionalParams.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​VariadicParams.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​UnsafeUndefined.mls Migrates annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​UnsafeFieldAssignments.mls Migrates wildcard receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​TailCallRestCopies.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​syntax/​SelectiveOpens.mls Adds coverage for dotted, nested, indented, and path-based selective opens.
hkmc2/​shared/​src/​test/​mlscript/​slop/​syntax/​OpenWildcardsAndAliases.mls Adds coverage for wildcard opens, aliases, hiding, and module aliases.
hkmc2/​shared/​src/​test/​mlscript/​slop/​syntax/​ConditionalBlocks.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​slop/​syntax/​ConditionalBlockEdges.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​slop/​strictres/​OptionalParams.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​strictres/​OptionalBinding.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​SharedFunctionSignatures.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​RewriteRepresentations.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​PlainFields.mls Migrates JavaScript annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​OverrideLayouts.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​OptionalEtaExpansion.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​OptionalBinding.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​LeadingDotSelections.mls Migrates wildcard namespace opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​JsSymbol.mls Migrates symbol and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ImplicitNamespaces.mls Migrates namespace opens and related diagnostics.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ImplicitNamespaceRecordPatterns.mls Migrates wildcard namespace opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ImplicitNamespacePatterns.mls Migrates namespace opens and related diagnostics.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ImplicitNamespaceIndexChains.mls Migrates namespace opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ImplicitNamespaceFlowRegressions.mls Migrates namespace opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ImplicitNamespaceChains.mls Migrates namespace opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ImmutableConstructorAndPatternParameters.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​EmptyTypeInterfaces.mls Migrates wildcard receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​slop/​EmptyRecords.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​slop/​DefinitionIdentity.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ConstructorArity.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​slop/​codegen/​ComputedSelections.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ClonedHandlers.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​ClonedBindings.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​CallableSignatures.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​slop/​BottomAnnotations.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​opt/​WorkerWrapper.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​opt/​CaseOfCase.mls Migrates annotation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​opt/​BasicVarPropag.mls Migrates scoped opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​objbuf/​ObjectBufferAllocator.mls Migrates object-buffer opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​objbuf/​BasicsObjBuf.mls Migrates object-buffer and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​TypeResolution.mls Migrates wildcard type opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​SelfPatternRefinement.mls Migrates evaluation-context opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​SealedClasses.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​newres/​RecursiveEnvironment.mls Migrates wildcard receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​Records.mls Migrates selective and wildcard record opens.
hkmc2/​shared/​src/​test/​mlscript/​newres/​RecordIntersections.mls Migrates wildcard receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​ReceiverResolution.mls Migrates selective receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​Projections.mls Migrates wildcard projection opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​PrivateMembers.mls Migrates private-member opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​PrivateMemberMixes.mls Migrates wildcard receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​PrivateCompanions.mls Migrates annotation and module opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​PatternRefinement.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​Overrides.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​newres/​OverloadedClassImports.mls Migrates class imports to the new open syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​OverloadedCalls.mls Migrates wildcard module opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​OptionImports.mls Migrates option opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​newres/​MapOptionFlow.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​LexerMigration.mls Migrates operator opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​InvalidClassCompanions.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​newres/​Interpretations.mls Migrates wildcard and type opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​InheritedTypeArguments.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​Erasure.mls Migrates wildcard type opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​Dynamic.mls Migrates dynamic receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​ConstructorResolution.mls Migrates constructor and wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​ConstructorFieldRecovery.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​newres/​ClonedConstructors.mls Migrates constructor and receiver opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​ClassValues.mls Migrates namespace opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​newres/​Annotations.mls Migrates annotation and wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​handlers/​UserThreads.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​handlers/​GeneratorStack.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​handlers/​Async.mls Migrates annotation and handler opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​flows/​SelExpansionImport.mls Updates open-related diagnostic spans.
hkmc2/​shared/​src/​test/​mlscript/​effect-analysis/​Basic.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​dead-param-elim/​todos.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​TailRecFormerFailure.mls Migrates stack wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​SourceLocations.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​RuntimeUsage.mls Migrates runtime wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​PrivateMemberExtrusion.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​PrivateClassStorage.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​OpenJS.mls Migrates JavaScript member opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​Open.mls Adds coverage for dotted paths, indentation, nested groups, and module aliases.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​NoInline.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​Inliner.mls Migrates annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​ImportMLs.mls Migrates imports and adds legacy-syntax warning coverage.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​ImportExample.mls Migrates wildcard and selective opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​ImportedOps.mls Migrates operator module opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​ImportConflicts.mls Migrates conflict and shadowing tests to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​FunnyOpen.mls Migrates operator-open syntax and related diagnostics.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​ErasedTypes.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​ClassHeaders.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​BadOpen.mls Migrates invalid-open diagnostics to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​BadNew.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​BadGenerators.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript/​codegen/​BadConfigDirective.mls Updates available-version diagnostics.
hkmc2/​shared/​src/​test/​mlscript/​block-staging/​PrintCode.mls Migrates block and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​basics/​Underscores.mls Migrates iterator wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​basics/​StrTest.mls Migrates string-operation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​basics/​Records.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​basics/​MemberProjections.mls Migrates projection opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​basics/​Assert.mls Migrates option wildcard opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​backlog/​UCS.mls Updates dotted-selection diagnostics.
hkmc2/​shared/​src/​test/​mlscript/​backlog/​ToTriage.mls Adds operator-first selective-open coverage.
hkmc2/​shared/​src/​test/​mlscript/​backlog/​OfStatements.mls Migrates invalid-open diagnostics to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​backlog/​NewWith.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​backlog/​ForLLM.mls Updates diagnostic spans affected by the syntax changes.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​TypeTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​RulesTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​RecursiveDescentTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​PrattParsingTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​ParseRuleVisualizerTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​ParseRuleTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​ParserTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​ParserErrorTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​LoopExpressions.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​LexerTest.mls Migrates lexer-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​LeftRecursion.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​DirectiveTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​parsing/​CamlLightTest.mls Migrates parser-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript/​apps/​IterTest.mls Migrates iterator and stack opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​XML.mls Migrates prelude and iterator opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​wasm/​modules/​diamond/​Right.mls Migrates counter opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​wasm/​modules/​diamond/​Left.mls Migrates counter opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​ups/​TruthyFalsy.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript-compile/​ups/​EvenOddTree.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript-compile/​ups/​EvaluationContext.mls Migrates option and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​ups/​DnfCnf.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript-compile/​TreeTracer.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​Term.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​SymbolKeyLibrary.mls Migrates annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​Shape.mls Migrates prelude, block, and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​RuntimeWasm.mls Migrates annotation opens to the dotted form.
hkmc2/​shared/​src/​test/​mlscript-compile/​Runtime.mls Migrates annotation and JavaScript opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​Record.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​Predef.mls Migrates annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​treejoin.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​sphere.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​secretary.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​scc.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​rsa.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​puzzle.mls Migrates nofib prelude and annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​primetest.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​pretty.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​power.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​para.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​NofibPrelude.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​minimax.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​mate.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​mandel2.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​mandel.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​life.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​lcss.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​lastpiece.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​lambda.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​knights.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​integer.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​gcd.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​fish.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​eliza.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​cse.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​cryptarithm2.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​cryptarithm1.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​constraints.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​clausify.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​circsim.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​cichelli.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​calendar.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​boyer2.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​boyer.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​banner.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​awards.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​atom.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​nofib/​ansi.mls Migrates nofib prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​NestedFunctionsNoLift.mls Migrates annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​MutMap.mls Migrates prelude and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​ModuleReceiverCapture.mls Migrates annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​LazyFingerTree.mls Migrates iterator, prelude, and module opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​LazyArray.mls Migrates iterator, prelude, and module opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​Iter.mls Migrates annotation, option, stack, and prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​resume_nontail.mls Migrates handler-benchmark opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​product_early.mls Migrates handler-benchmark opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​parsing_dollars.mls Migrates handler-benchmark opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​iterator.mls Migrates handler-benchmark opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​handler_sieve.mls Migrates handler-benchmark opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​generator.mls Migrates handler-benchmark opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​countdown.mls Migrates handler-benchmark opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​handlers-bench/​BaseEffects.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​FingerTreeList.mls Migrates option, iterator, prelude, and module opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​FingerTreeList_StressTest.mls Migrates stress-test opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​FilePrivateFunctions.mls Migrates annotation opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​Example.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​Block.mls Migrates prelude, string, and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​TreeHelpers.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Tree.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​TokenHelpers.mls Migrates stack and prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Token.mls Migrates option and prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Test.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Rules.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​RecursiveDescent.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​PrattParsing.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​ParseRuleVisualizer.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​ParseRule.mls Migrates parser-library and nested opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Parser.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Lexer.mls Migrates lexer-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Keywords.mls Migrates prelude and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Extension.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​Expr.mls Migrates string-operation and option opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing/​BasicExpr.mls Migrates parser-library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing-web-demo/​main.mls Migrates web-demo library opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​parsing-web-demo/​Examples.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​CSV.mls Migrates prelude opens to the new syntax.
hkmc2/​shared/​src/​test/​mlscript-compile/​apps/​Accounting.mls Migrates string-operation and prelude opens to the new syntax.
hkmc2/​shared/​src/​main/​scala/​hkmc2/​syntax/​Parser.scala Parses dotted, nested, indented, and aliased open groups.
hkmc2/​shared/​src/​main/​scala/​hkmc2/​syntax/​Keyword.scala Adjusts open parsing precedence to support aliases.
hkmc2/​shared/​src/​main/​scala/​hkmc2/​Config.scala Adds the 0.3.2 language version and legacy-syntax warning behavior.
doc/​reference.md Documents dotted paths, nested groups, wildcards, aliases, exclusions, and migration behavior.

Review effort: Lite

@LPTK
LPTK marked this pull request as ready for review November 11, 2026 14:04
@LPTK LPTK changed the title Dotted selective opens New open syntax with paths and renaming Nov 11, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants