Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New MLscript frontend #187

Merged
merged 533 commits into from
Jan 12, 2024
Merged

New MLscript frontend #187

merged 533 commits into from
Jan 12, 2024

Conversation

LPTK
Copy link
Contributor

@LPTK LPTK commented Oct 4, 2023

This implements the new parsing and type checking of MLscript definitions, moving it further towards a complete and usable general-purpose programming language with support for blended FP/OOP.

It's still a work in progress and several pieces are still missing. For example:

  • self-type signatures are not yet checked
  • variance analysis is currently extremely limited and needs to be redone
  • variance annotations are not checked!
  • many indirectly-referential methods and other definitions fail to compile when they should, emitting spurious cycle dependency errors
  • we do not currently allow a definition to refer to a non-top-level type defined in an enclosing scope
  • the handling of unknown type argument ranges (bounded wildcards) is missing; currently we display to users types that are kind of wrong because they wrongly use internal type ranges
  • this-matching doesn’t really work due to spurious cyclic typing errors
  • accessing fields in parent specifications doesn’t really work due to spurious cyclic parent-spec-typing errors

We are also sorely missing user-facing documentation.

@LPTK LPTK linked an issue Oct 11, 2023 that may be closed by this pull request
@LPTK LPTK linked an issue Oct 11, 2023 that may be closed by this pull request
LPTK and others added 8 commits October 12, 2023 14:53
@LPTK LPTK force-pushed the new-definition-typing branch from 550a322 to 8894b74 Compare November 22, 2023 17:16
LPTK and others added 16 commits November 23, 2023 01:16
Fixes #191
The current lifter implementation is buggy and its results changed strangely
…erals (#199)

* Support hex, octal, and binary integers

* Support seperators in integer literals

* Support decimal numbers
* Fix self-type-blindness
* Make ctor signatures produce typerefs
* Add explicit variance annotations (variance analysis needs to be overhauled)
* Warn when annotating concrete classes
* Handle transitively-inherited self-types properly
* Fix generic modules (somewhat)
* Fix transitively-inherited trait signatures
* Fix SOF in type simplifier due to cyclic self-types
@LPTK LPTK merged commit 4511944 into mlscript Jan 12, 2024
1 check passed
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.

Implement new MLscript syntax Recover parametricity using a matchable top type
7 participants