Skip to content

Conversation

@auduchinok
Copy link
Member

Allows type checking of unfinished object expressions, like these:

{ new T() }
{ new T(arg1, arg2) }

Before with is typed, this is parsed as a computation expression and these errors are reported:

Expression/Object - Class 16.fs (7,1)-(7,12) typecheck error
  Invalid object expression.
  Objects without overrides or interfaces should use the expression form 'new Type(args)' without braces.

Expression/Object - Class 16.fs (7,1)-(7,12) typecheck error
  Invalid record, sequence or computation expression.
  Sequence expressions should be of the form 'seq { ... }'

The problematic part is neither the type usage, nor the arguments are checked. This PR adds checking of such expressions.

I'm going to look into adding tests later, for now I'd like to see what does CI say about the change.

@auduchinok auduchinok requested a review from a team as a code owner December 8, 2023 17:07
@auduchinok auduchinok changed the title Checker: check unfinished obj expression type inside parsed computati… Checker: check unfinished obj expression inside computations Dec 8, 2023
Copy link
Contributor

@psfinaki psfinaki left a comment

Choose a reason for hiding this comment

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

Awesome, thanks!

@psfinaki psfinaki enabled auto-merge (squash) December 11, 2023 11:41
@psfinaki psfinaki merged commit 297166e into dotnet:main Dec 11, 2023
@auduchinok auduchinok deleted the checker-seqExpr-objExpr branch December 12, 2023 11:35
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.

3 participants