Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
fsharp
提交
a766f25c
F
fsharp
项目概览
dotNET Platform
/
fsharp
10 个月 前同步成功
通知
0
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fsharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
a766f25c
编写于
4月 20, 2023
作者:
F
Florian Verdonck
提交者:
GitHub
4月 20, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Include end in nested sig module range. (#15117)
上级
f69e2f5f
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
76 addition
and
5 deletion
+76
-5
src/Compiler/pars.fsy
src/Compiler/pars.fsy
+9
-5
tests/service/data/SyntaxTree/NestedModule/NestedModuleWithBeginEndAndDecls.fsi
...taxTree/NestedModule/NestedModuleWithBeginEndAndDecls.fsi
+7
-0
tests/service/data/SyntaxTree/NestedModule/NestedModuleWithBeginEndAndDecls.fsi.bsl
...ree/NestedModule/NestedModuleWithBeginEndAndDecls.fsi.bsl
+40
-0
tests/service/data/SyntaxTree/NestedModule/RangeOfBeginEnd.fsi
.../service/data/SyntaxTree/NestedModule/RangeOfBeginEnd.fsi
+4
-0
tests/service/data/SyntaxTree/NestedModule/RangeOfBeginEnd.fsi.bsl
...vice/data/SyntaxTree/NestedModule/RangeOfBeginEnd.fsi.bsl
+16
-0
未找到文件。
src/Compiler/pars.fsy
浏览文件 @
a766f25c
...
...
@@ -662,11 +662,13 @@ moduleSpfn:
if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec())
let info = SynComponentInfo($1 @ attribs2, None, [], path, xmlDoc, false, vis, rhs parseState 3)
if Option.isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2))
let m = (rhs2 parseState 1 4, $5)
let decls, mOptEnd = $5
let m = (rhs2 parseState 1 4, decls)
||> unionRangeWithListBy (fun (d: SynModuleSigDecl) -> d.Range)
|> unionRangeWithXmlDoc xmlDoc
let m = match mOptEnd with | None -> m | Some mEnd -> unionRanges m mEnd
let trivia: SynModuleSigDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = $4 }
SynModuleSigDecl.NestedModule(info, isRec,
$5
, m, trivia) }
SynModuleSigDecl.NestedModule(info, isRec,
decls
, m, trivia) }
| opt_attributes opt_access moduleIntro error
{ let mModule, isRec, path, vis, attribs2 = $3
...
...
@@ -743,15 +745,17 @@ moduleSpecBlock:
/* #light-syntax, with no sig/end or begin/end */
| OBLOCKBEGIN moduleSpfns oblockend
{ $2 }
{ $2
, None
}
/* #light-syntax, with sig/end or begin/end */
| OBLOCKBEGIN sigOrBegin moduleSpfnsPossiblyEmpty END oblockend
{ $3 }
{ let mEnd = rhs parseState 4
$3, Some mEnd }
/* non-#light-syntax, with sig/end or begin/end */
| sigOrBegin moduleSpfnsPossiblyEmpty END
{ $2 }
{ let mEnd = rhs parseState 3
$2, Some mEnd }
tyconSpfnList:
...
...
tests/service/data/SyntaxTree/NestedModule/NestedModuleWithBeginEndAndDecls.fsi
0 → 100644
浏览文件 @
a766f25c
namespace
X
module
Y
=
begin
val
a
:
int
type
B
=
string
end
tests/service/data/SyntaxTree/NestedModule/NestedModuleWithBeginEndAndDecls.fsi.bsl
0 → 100644
浏览文件 @
a766f25c
SigFile
(
ParsedSigFileInput
(
"/root/NestedModule/NestedModuleWithBeginEndAndDecls.fsi"
,
QualifiedNameOfFile
NestedModuleWithBeginEndAndDecls
,
[],
[],
[
SynModuleOrNamespaceSig
([
X
],
false
,
DeclaredNamespace
,
[
NestedModule
(
SynComponentInfo
([],
None
,
[],
[
Y
],
PreXmlDoc
((
3
,
0
),
FSharp
.
Compiler
.
Xml
.
XmlDocCollector
),
false
,
None
,
(
3
,
0
--
3
,
8
)),
false
,
[
Val
(
SynValSig
([],
SynIdent
(
a
,
None
),
SynValTyparDecls
(
None
,
true
),
LongIdent
(
SynLongIdent
([
int
],
[],
[
None
])),
SynValInfo
([],
SynArgInfo
([],
false
,
None
)),
false
,
false
,
PreXmlDoc
((
5
,
8
),
FSharp
.
Compiler
.
Xml
.
XmlDocCollector
),
None
,
None
,
(
5
,
8
--
5
,
18
),
{
LeadingKeyword
=
Val
(
5
,
8
--
5
,
11
)
InlineKeyword
=
None
WithKeyword
=
None
EqualsRange
=
None
}
),
(
5
,
8
--
5
,
18
));
Types
([
SynTypeDefnSig
(
SynComponentInfo
([],
None
,
[],
[
B
],
PreXmlDoc
((
6
,
8
),
FSharp
.
Compiler
.
Xml
.
XmlDocCollector
),
false
,
None
,
(
6
,
13
--
6
,
14
)),
Simple
(
TypeAbbrev
(
Ok
,
LongIdent
(
SynLongIdent
([
string
],
[],
[
None
])),
(
6
,
17
--
6
,
23
)),
(
6
,
17
--
6
,
23
)),
[],
(
6
,
13
--
6
,
23
),
{
LeadingKeyword
=
Type
(
6
,
8
--
6
,
12
)
EqualsRange
=
Some
(
6
,
15
--
6
,
16
)
WithKeyword
=
None
}
)],
(
6
,
8
--
6
,
23
))],
(
3
,
0
--
7
,
7
),
{
ModuleKeyword
=
Some
(
3
,
0
--
3
,
6
)
EqualsRange
=
Some
(
3
,
9
--
3
,
10
)
}
)],
PreXmlDocEmpty
,
[],
None
,
(
1
,
0
--
7
,
7
),
{
LeadingKeyword
=
Namespace
(
1
,
0
--
1
,
9
)
}
)],
{
ConditionalDirectives
=
[]
CodeComments
=
[]
}
,
set
[]))
tests/service/data/SyntaxTree/NestedModule/RangeOfBeginEnd.fsi
0 → 100644
浏览文件 @
a766f25c
namespace
X
module
Y
=
begin
end
tests/service/data/SyntaxTree/NestedModule/RangeOfBeginEnd.fsi.bsl
0 → 100644
浏览文件 @
a766f25c
SigFile
(
ParsedSigFileInput
(
"/root/NestedModule/RangeOfBeginEnd.fsi"
,
QualifiedNameOfFile
RangeOfBeginEnd
,
[],
[],
[
SynModuleOrNamespaceSig
([
X
],
false
,
DeclaredNamespace
,
[
NestedModule
(
SynComponentInfo
([],
None
,
[],
[
Y
],
PreXmlDoc
((
3
,
0
),
FSharp
.
Compiler
.
Xml
.
XmlDocCollector
),
false
,
None
,
(
3
,
0
--
3
,
8
)),
false
,
[],
(
3
,
0
--
4
,
13
),
{
ModuleKeyword
=
Some
(
3
,
0
--
3
,
6
)
EqualsRange
=
Some
(
3
,
9
--
3
,
10
)
}
)],
PreXmlDocEmpty
,
[],
None
,
(
1
,
0
--
4
,
13
),
{
LeadingKeyword
=
Namespace
(
1
,
0
--
1
,
9
)
}
)],
{
ConditionalDirectives
=
[]
CodeComments
=
[]
}
,
set
[]))
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录