Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit96bfa24

Browse files
authored
Merge pull request#15246 from dotnet/merges/main-to-release/dev17.7
Merge main to release/dev17.7
2 parents2341436 +07dbf06 commit96bfa24

File tree

16 files changed

+206
-12
lines changed

16 files changed

+206
-12
lines changed

‎src/Compiler/pars.fsy

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3732,22 +3732,22 @@ declExpr:
37323732
$3 $2 mIf false }
37333733

37343734
| IF declExpr recover %prec expr_if
3735-
{ reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf())
3736-
// Produce an approximate expression during error recovery.
3737-
// Include expressions to make sure they get type checked in case that generates useful results for intellisense.
3738-
// Generate a throwAway for the expression so it isn't forced to have a type 'bool'
3739-
// from the context it is used in.
3740-
exprFromParseError $2 }
3735+
{ errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1))
3736+
let ifExpr = $2
3737+
let mIf = rhs parseState 1
3738+
let mThen = ifExpr.Range.EndRange
3739+
let m = unionRanges mIf mThen
3740+
let spIfToThen = DebugPointAtBinding.Yes m
3741+
let trivia = { IfKeyword = mIf; IsElif = false; ThenKeyword = mThen; ElseKeyword = None; IfToThenRange = m }
3742+
SynExpr.IfThenElse($2, arbExpr ("if1", mThen), None, spIfToThen, true, m, trivia) }
37413743

37423744
| IF recover %prec expr_if
3743-
{ reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf())
3744-
// Produce an approximate expression during error recovery. There can still be value in doing this even
3745-
// for this pathological case.
3745+
{ errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1))
37463746
let m = rhs parseState 1
37473747
let mEnd = m.EndRange
37483748
let spIfToThen = DebugPointAtBinding.Yes mEnd
37493749
let trivia = { IfKeyword = m; IsElif = false; ThenKeyword = m; ElseKeyword = None; IfToThenRange = m }
3750-
exprFromParseError (SynExpr.IfThenElse(arbExpr ("ifGuard1", mEnd), arbExpr ("thenBody1", mEnd), None, spIfToThen, true, m, trivia)) }
3750+
SynExpr.IfThenElse(arbExpr ("if2", mEnd), arbExpr ("if3", mEnd), None, spIfToThen, true, m, trivia) }
37513751

37523752
| LAZY declExpr %prec expr_lazy
37533753
{ SynExpr.Lazy($2, unionRanges (rhs parseState 1) $2.Range) }
@@ -4318,13 +4318,25 @@ ifExprThen:
43184318
| THEN declExpr %prec prec_then_if
43194319
{ $2, rhs parseState 1 }
43204320

4321+
| THEN recover %prec prec_then_if
4322+
{ let mThen = rhs parseState 1
4323+
arbExpr ("ifThen1", mThen.EndRange), mThen }
4324+
43214325
| OTHEN OBLOCKBEGIN typedSequentialExpr oblockend %prec prec_then_if
43224326
{ $3, rhs parseState 1 }
43234327

43244328
| OTHEN OBLOCKBEGIN typedSequentialExpr recover %prec prec_then_if
43254329
{ if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileThen())
43264330
exprFromParseError $3, rhs parseState 1 }
43274331

4332+
| OTHEN recover %prec prec_then_if
4333+
{ let mThen = rhs parseState 1
4334+
arbExpr ("ifThen2", mThen.EndRange), mThen }
4335+
4336+
| OTHEN OBLOCKBEGIN recover %prec prec_then_if
4337+
{ let mThen = rhs parseState 1
4338+
arbExpr ("ifThen3", mThen.EndRange), mThen }
4339+
43284340
ifExprElifs:
43294341
| /* EMPTY */
43304342
{ None, None }

‎src/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,12 @@
3434
<CompileInclude="fsiaux.fs" />
3535
</ItemGroup>
3636

37-
<ItemGroup>
38-
<ProjectReferenceInclude="..\FSharp.Core\FSharp.Core.fsproj" />
37+
<ItemGroupCondition="'$(FSHARPCORE_USE_PACKAGE)' != 'true'">
38+
<ProjectReferenceInclude="$(FSharpSourcesRoot)\FSharp.Core\FSharp.Core.fsproj" />
39+
</ItemGroup>
40+
41+
<ItemGroupCondition="'$(FSHARPCORE_USE_PACKAGE)' == 'true'">
42+
<PackageReferenceInclude="FSharp.Core"Version="$(FSharpCoreShippedPackageVersionValue)" />
3943
</ItemGroup>
4044

4145
</Project>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
moduleModule
2+
3+
iftruethen()
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
ImplFile
2+
(ParsedImplFileInput
3+
("/root/Expression/If 01.fs",false, QualifiedNameOfFile Module, [], [],
4+
[SynModuleOrNamespace
5+
([Module],false, NamedModule,
6+
[Expr
7+
(IfThenElse
8+
(Const (Booltrue, (3,3--3,7)), Const (Unit, (3,13--3,15)), None,
9+
Yes (3,0--3,12),false, (3,0--3,15),
10+
{ IfKeyword= (3,0--3,2)
11+
IsElif=false
12+
ThenKeyword= (3,8--3,12)
13+
ElseKeyword= None
14+
IfToThenRange= (3,0--3,12) }), (3,0--3,15))],
15+
PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None,
16+
(1,0--3,15), { LeadingKeyword= Module (1,0--1,6) })], (true,true),
17+
{ ConditionalDirectives= []
18+
CodeComments= [] }, set []))
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
moduleModule
2+
3+
iftruethen()else()
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
ImplFile
2+
(ParsedImplFileInput
3+
("/root/Expression/If 02.fs",false, QualifiedNameOfFile Module, [], [],
4+
[SynModuleOrNamespace
5+
([Module],false, NamedModule,
6+
[Expr
7+
(IfThenElse
8+
(Const (Booltrue, (3,3--3,7)), Const (Unit, (3,13--3,15)),
9+
Some (Const (Unit, (3,21--3,23))), Yes (3,0--3,12),false,
10+
(3,0--3,23), { IfKeyword= (3,0--3,2)
11+
IsElif=false
12+
ThenKeyword= (3,8--3,12)
13+
ElseKeyword= Some (3,16--3,20)
14+
IfToThenRange= (3,0--3,12) }), (3,0--3,23))],
15+
PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None,
16+
(1,0--3,23), { LeadingKeyword= Module (1,0--1,6) })], (true,true),
17+
{ ConditionalDirectives= []
18+
CodeComments= [] }, set []))
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
moduleModule
2+
3+
iftrue
4+
5+
()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
ImplFile
2+
(ParsedImplFileInput
3+
("/root/Expression/If 03.fs",false, QualifiedNameOfFile Module, [], [],
4+
[SynModuleOrNamespace
5+
([Module],false, NamedModule,
6+
[Expr
7+
(IfThenElse
8+
(Const (Booltrue, (3,3--3,7)),
9+
ArbitraryAfterError ("if1", (3,7--3,7)), None, Yes (3,0--3,7),
10+
true, (3,0--3,7), { IfKeyword= (3,0--3,2)
11+
IsElif=false
12+
ThenKeyword= (3,7--3,7)
13+
ElseKeyword= None
14+
IfToThenRange= (3,0--3,7) }), (3,0--3,7));
15+
Expr (Const (Unit, (5,0--5,2)), (5,0--5,2))],
16+
PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None,
17+
(1,0--5,2), { LeadingKeyword= Module (1,0--1,6) })], (true,true),
18+
{ ConditionalDirectives= []
19+
CodeComments= [] }, set []))
20+
21+
(3,8)-(5,0) parse error Incomplete structured construct ator before this point in expression
22+
(3,0)-(3,2) parse error Incomplete conditional. Expected 'if<expr> then<expr>'or 'if<expr> then<expr>else<expr>'.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
moduleModule
2+
3+
if
4+
5+
()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
ImplFile
2+
(ParsedImplFileInput
3+
("/root/Expression/If 04.fs",false, QualifiedNameOfFile Module, [], [],
4+
[SynModuleOrNamespace
5+
([Module],false, NamedModule,
6+
[Expr
7+
(IfThenElse
8+
(ArbitraryAfterError ("if2", (3,2--3,2)),
9+
ArbitraryAfterError ("if3", (3,2--3,2)), None, Yes (3,2--3,2),
10+
true, (3,0--3,2), { IfKeyword= (3,0--3,2)
11+
IsElif=false
12+
ThenKeyword= (3,0--3,2)
13+
ElseKeyword= None
14+
IfToThenRange= (3,0--3,2) }), (3,0--3,2));
15+
Expr (Const (Unit, (5,0--5,2)), (5,0--5,2))],
16+
PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None,
17+
(1,0--5,2), { LeadingKeyword= Module (1,0--1,6) })], (true,true),
18+
{ ConditionalDirectives= []
19+
CodeComments= [] }, set []))
20+
21+
(3,3)-(5,0) parse error Incomplete structured construct ator before this point in expression
22+
(3,0)-(3,2) parse error Incomplete conditional. Expected 'if<expr> then<expr>'or 'if<expr> then<expr>else<expr>'.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp