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

Commit121fd8a

Browse files
vzarytovskiixperiandriT-GroauduchinokKevinRansom
authored
Merge pull request#15279 from dotnet/merges/main-to-release/net8
Co-authored-by: Andrii Chebukin <xperiandri@live.ru>Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>Co-authored-by: Eugene Auduchinok <eugene.auduchinok@jetbrains.com>Co-authored-by: Kevin Ransom (msft) <codecutter@hotmail.com>Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com>Co-authored-by: dawe <dawedawe@posteo.de>Fix15254 (#15257)Fix navigation for external enums, DUs and name resultion for members (#15270)
2 parentsd66a79f +2eef7f3 commit121fd8a

File tree

194 files changed

+16383
-13321
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

194 files changed

+16383
-13321
lines changed

‎.fantomasignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ artifacts/
1515
# For some reason, it tries to format files from remotes (Processing .\.git\refs\remotes\<remote>\FSComp.fsi)
1616
.git/
1717

18-
1918
# Explicitly unformatted implementation
2019
src/Compiler/Checking/AccessibilityLogic.fs
2120
src/Compiler/Checking/AttributeChecking.fs
@@ -98,6 +97,7 @@ src/Compiler/Service/IncrementalBuild.fs
9897
src/Compiler/Service/ServiceAssemblyContent.fs
9998
src/Compiler/Service/ServiceDeclarationLists.fs
10099
src/Compiler/Service/ServiceErrorResolutionHints.fs
100+
vsintegration/src/FSharp.Editor/Common/CancellableTasks.fs
101101

102102
# Fantomas limitations on signature files (to investigate)
103103

‎src/Compiler/Checking/CheckExpressions.fs

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1807,10 +1807,17 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * '
18071807
let fldResolutions =
18081808
let allFields = flds |> List.map (fun ((_, ident), _) -> ident)
18091809
flds
1810-
|> List.map (fun (fld, fldExpr) ->
1811-
let (fldPath, fldId) = fld
1812-
let frefSet = ResolveField cenv.tcSink cenv.nameResolver env.eNameResEnv ad ty fldPath fldId allFields
1813-
fld, frefSet, fldExpr)
1810+
|> List.choose (fun (fld, fldExpr) ->
1811+
try
1812+
let fldPath, fldId = fld
1813+
let frefSet = ResolveField cenv.tcSink cenv.nameResolver env.eNameResEnv ad ty fldPath fldId allFields
1814+
Some(fld, frefSet, fldExpr)
1815+
with e ->
1816+
errorRecoveryNoRange e
1817+
None
1818+
)
1819+
1820+
if fldResolutions.IsEmpty then None else
18141821

18151822
let relevantTypeSets =
18161823
fldResolutions |> List.map (fun (_, frefSet, _) ->
@@ -1870,7 +1877,7 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * '
18701877
Map.add fref2.FieldName fldExpr fs, (fref2.FieldName, fldExpr) :: rfldsList
18711878

18721879
| _ -> error(Error(FSComp.SR.tcRecordFieldInconsistentTypes(), m)))
1873-
tinst, tcref, fldsmap, List.rev rfldsList
1880+
Some(tinst, tcref, fldsmap, List.rev rfldsList)
18741881

18751882
let rec ApplyUnionCaseOrExn (makerForUnionCase, makerForExnTag) m (cenv: cenv) env overallTy item =
18761883
let g = cenv.g
@@ -2217,18 +2224,21 @@ module GeneralizationHelpers =
22172224
//-------------------------------------------------------------------------
22182225

22192226
let ComputeInlineFlag (memFlagsOption: SynMemberFlags option) isInline isMutable g attrs m =
2220-
let hasNoCompilerInliningAttribute() = HasFSharpAttribute g g.attrib_NoCompilerInliningAttribute attrs
2221-
let isCtorOrAbstractSlot() =
2227+
let hasNoCompilerInliningAttribute () = HasFSharpAttribute g g.attrib_NoCompilerInliningAttribute attrs
2228+
2229+
let isCtorOrAbstractSlot () =
22222230
match memFlagsOption with
22232231
| None -> false
22242232
| Some x -> (x.MemberKind = SynMemberKind.Constructor) || x.IsDispatchSlot || x.IsOverrideOrExplicitImpl
22252233

2234+
let isExtern () = HasFSharpAttributeOpt g g.attrib_DllImportAttribute attrs
2235+
22262236
let inlineFlag, reportIncorrectInlineKeywordUsage =
22272237
// Mutable values may never be inlined
22282238
// Constructors may never be inlined
22292239
// Calls to virtual/abstract slots may never be inlined
22302240
// Values marked with NoCompilerInliningAttribute or [<MethodImpl(MethodImplOptions.NoInlining)>] may never be inlined
2231-
if isMutable || isCtorOrAbstractSlot() || hasNoCompilerInliningAttribute() then
2241+
if isMutable || isCtorOrAbstractSlot() || hasNoCompilerInliningAttribute()|| isExtern ()then
22322242
ValInline.Never, errorR
22332243
elif HasMethodImplNoInliningAttribute g attrs then
22342244
ValInline.Never,
@@ -7362,7 +7372,10 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m
73627372
match flds with
73637373
| [] -> []
73647374
| _ ->
7365-
let tinst, tcref, _, fldsList = BuildFieldMap cenv env hasOrigExpr overallTy flds mWholeExpr
7375+
match BuildFieldMap cenv env hasOrigExpr overallTy flds mWholeExpr with
7376+
| None -> []
7377+
| Some(tinst, tcref, _, fldsList) ->
7378+
73667379
let gtyp = mkAppTy tcref tinst
73677380
UnifyTypes cenv env mWholeExpr overallTy gtyp
73687381

@@ -7393,7 +7406,7 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m
73937406
error(Error(errorInfo, mWholeExpr))
73947407

73957408
if isFSharpObjModelTy g overallTy then errorR(Error(FSComp.SR.tcTypeIsNotARecordTypeNeedConstructor(), mWholeExpr))
7396-
elif not (isRecdTy g overallTy) then errorR(Error(FSComp.SR.tcTypeIsNotARecordType(), mWholeExpr))
7409+
elif not (isRecdTy g overallTy || fldsList.IsEmpty) then errorR(Error(FSComp.SR.tcTypeIsNotARecordType(), mWholeExpr))
73977410

73987411
let superInitExprOpt , tpenv =
73997412
match inherits, GetSuperTypeOfType g cenv.amap mWholeExpr overallTy with
@@ -7411,14 +7424,18 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m
74117424
errorR(InternalError("Unexpected failure in getting super type", mWholeExpr))
74127425
None, tpenv
74137426

7414-
let expr, tpenv = TcRecordConstruction cenv overallTy env tpenv withExprInfoOpt overallTy fldsList mWholeExpr
7427+
if fldsList.IsEmpty && isTyparTy g overallTy then
7428+
SolveTypeAsError env.DisplayEnv cenv.css mWholeExpr overallTy
7429+
mkDefault (mWholeExpr, overallTy), tpenv
7430+
else
7431+
let expr, tpenv = TcRecordConstruction cenv overallTy env tpenv withExprInfoOpt overallTy fldsList mWholeExpr
74157432

7416-
let expr =
7417-
match superInitExprOpt with
7418-
| _ when isStructTy g overallTy -> expr
7419-
| Some superInitExpr -> mkCompGenSequential mWholeExpr superInitExpr expr
7420-
| None -> expr
7421-
expr, tpenv
7433+
let expr =
7434+
match superInitExprOpt with
7435+
| _ when isStructTy g overallTy -> expr
7436+
| Some superInitExpr -> mkCompGenSequential mWholeExpr superInitExpr expr
7437+
| None -> expr
7438+
expr, tpenv
74227439

74237440

74247441
// Check '{| .... |}'

‎src/Compiler/Checking/CheckExpressions.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,7 @@ val BuildFieldMap:
895895
ty: TType->
896896
flds:((Ident list* Ident)* 'T) list->
897897
m: range->
898-
TypeInst* TyconRef* Map<string, 'T>*(string* 'T) list
898+
(TypeInst* TyconRef* Map<string, 'T>*(string* 'T) list) option
899899

900900
/// Check a long identifier 'Case' or 'Case argsR' that has been resolved to an active pattern case
901901
valTcPatLongIdentActivePatternCase:

‎src/Compiler/Checking/CheckPatterns.fs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,10 @@ and TcPatArrayOrList warnOnUpper cenv env vFlags patEnv ty isArray args m =
435435

436436
andTcRecordPat warnOnUpper cenv env vFlags patEnv ty fieldPats m=
437437
letfieldPats= fieldPats|> List.map(fun(fieldId,_,fieldPat)-> fieldId, fieldPat)
438-
lettinst,tcref,fldsmap,_fldsList= BuildFieldMap cenv envtrue ty fieldPats m
438+
match BuildFieldMap cenv envtrue ty fieldPats mwith
439+
| None->(fun _-> TPat_error m), patEnv
440+
| Some(tinst, tcref, fldsmap,_fldsList)->
441+
439442
letgtyp= mkAppTy tcref tinst
440443
letinst= List.zip(tcref.Typars m) tinst
441444

‎src/Compiler/Checking/FindUnsolved.fs

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ open Internal.Utilities.Library
88
openInternal.Utilities.Library.Extras
99
openFSharp.Compiler
1010
openFSharp.Compiler.DiagnosticsLogger
11+
openFSharp.Compiler.Text
1112
openFSharp.Compiler.TypedTree
1213
openFSharp.Compiler.TypedTreeBasics
1314
openFSharp.Compiler.TypedTreeOps
@@ -29,14 +30,17 @@ type cenv =
2930
override_.ToString()="<cenv>"
3031

3132
/// Walk types, collecting type variables
32-
letaccTy cenv _env ty=
33+
letaccTy cenv _env(fallbackRange:Range option)ty=
3334
letnormalizedTy= tryNormalizeMeasureInType cenv.g ty
3435
(freeInType CollectTyparsNoCaching normalizedTy).FreeTypars|> Zset.iter(fun tp->
35-
if(tp.Rigidity<> TyparRigidity.Rigid)then
36+
if(tp.Rigidity<> TyparRigidity.Rigid)then
37+
match fallbackRangewith
38+
| Some rwhen tp.Range= Range.range0-> tp.SetIdent(FSharp.Compiler.Syntax.Ident(tp.typar_id.idText, r))
39+
|_->()
3640
cenv.unsolved<- tp:: cenv.unsolved)
3741

3842
letaccTypeInst cenv env tyargs=
39-
tyargs|> List.iter(accTy cenv env)
43+
tyargs|> List.iter(accTy cenv env None)
4044

4145
/// Walk expressions, collecting type variables
4246
let recaccExpr(cenv:cenv)(env:env)expr=
@@ -52,17 +56,17 @@ let rec accExpr (cenv: cenv) (env: env) expr =
5256
accBind cenv env bind
5357
accExpr cenv env body
5458

55-
| Expr.Const(_,_, ty)->
56-
accTy cenv env ty
59+
| Expr.Const(_,r, ty)->
60+
accTy cenv env(Some r)ty
5761

5862
| Expr.Val(_v,_vFlags,_m)->()
5963

60-
| Expr.Quote(ast,_,_,_m, ty)->
64+
| Expr.Quote(ast,_,_,m, ty)->
6165
accExpr cenv env ast
62-
accTy cenv env ty
66+
accTy cenv env(Some m)ty
6367

64-
| Expr.Obj(_, ty, basev, basecall, overrides, iimpls,_m)->
65-
accTy cenv env ty
68+
| Expr.Obj(_, ty, basev, basecall, overrides, iimpls,m)->
69+
accTy cenv env(Some m)ty
6670
accExpr cenv env basecall
6771
accMethods cenv env basev overrides
6872
accIntfImpls cenv env basev iimpls
@@ -77,8 +81,8 @@ let rec accExpr (cenv: cenv) (env: env) expr =
7781
| Expr.Op(c, tyargs, args, m)->
7882
accOp cenv env(c, tyargs, args, m)
7983

80-
| Expr.App(f, fty, tyargs, argsl,_m)->
81-
accTy cenv env fty
84+
| Expr.App(f, fty, tyargs, argsl,m)->
85+
accTy cenv env(Some m)fty
8286
accTypeInst cenv env tyargs
8387
accExpr cenv env f
8488
accExprs cenv env argsl
@@ -88,33 +92,33 @@ let rec accExpr (cenv: cenv) (env: env) expr =
8892
letty= mkMultiLambdaTy cenv.g m argvs bodyTy
8993
accLambdas cenv env valReprInfo expr ty
9094

91-
| Expr.TyLambda(_, tps,_body,_m, bodyTy)->
95+
| Expr.TyLambda(_, tps,_body,m, bodyTy)->
9296
letvalReprInfo= ValReprInfo(ValReprInfo.InferTyparInfo tps,[], ValReprInfo.unnamedRetVal)
93-
accTy cenv env bodyTy
97+
accTy cenv env(Some m)bodyTy
9498
letty= mkForallTyIfNeeded tps bodyTy
9599
accLambdas cenv env valReprInfo expr ty
96100

97101
| Expr.TyChoose(_tps, e1,_m)->
98102
accExpr cenv env e1
99103

100104
| Expr.Match(_,_exprm, dtree, targets, m, ty)->
101-
accTy cenv env ty
105+
accTy cenv env(Some m)ty
102106
accDTree cenv env dtree
103107
accTargets cenv env m ty targets
104108

105109
| Expr.LetRec(binds, e,_m,_)->
106110
accBinds cenv env binds
107111
accExpr cenv env e
108112

109-
| Expr.StaticOptimization(constraints, e2, e3,_m)->
113+
| Expr.StaticOptimization(constraints, e2, e3,m)->
110114
accExpr cenv env e2
111115
accExpr cenv env e3
112116
constraints|> List.iter(function
113117
| TTyconEqualsTycon(ty1, ty2)->
114-
accTy cenv env ty1
115-
accTy cenv env ty2
118+
accTy cenv env(Some m)ty1
119+
accTy cenv env(Some m)ty2
116120
| TTyconIsStruct(ty1)->
117-
accTy cenv env ty1)
121+
accTy cenv env(Some m)ty1)
118122

119123
| Expr.WitnessArg(traitInfo,_m)->
120124
accTraitInfo cenv env traitInfo
@@ -136,7 +140,7 @@ and accIntfImpls cenv env baseValOpt l =
136140
List.iter(accIntfImpl cenv env baseValOpt) l
137141

138142
andaccIntfImpl cenv env baseValOpt(ty,overrides)=
139-
accTy cenv env ty
143+
accTy cenv envNonety
140144
accMethods cenv env baseValOpt overrides
141145

142146
andaccOp cenv env(op,tyargs,args,_m)=
@@ -158,16 +162,16 @@ and accOp cenv env (op, tyargs, args, _m) =
158162

159163
andaccTraitInfo cenv env(TTrait(tys,_nm,_,argTys,retTy,_sln))=
160164
argTys|> accTypeInst cenv env
161-
retTy|> Option.iter(accTy cenv env)
162-
tys|> List.iter(accTy cenv env)
165+
retTy|> Option.iter(accTy cenv env None)
166+
tys|> List.iter(accTy cenv env None)
163167

164168
andaccLambdas cenv env valReprInfo expr exprTy=
165169
match stripDebugPoints exprwith
166170
| Expr.TyChoose(_tps, bodyExpr,_m)-> accLambdas cenv env valReprInfo bodyExpr exprTy
167-
| Expr.Lambda_
168-
| Expr.TyLambda_->
171+
| Expr.Lambda(range= range)
172+
| Expr.TyLambda(range= range)->
169173
let_tps,ctorThisValOpt,baseValOpt,vsl,body,bodyTy= destLambdaWithValReprInfo cenv.g cenv.amap valReprInfo(expr, exprTy)
170-
accTy cenv env bodyTy
174+
accTy cenv env(Some range)bodyTy
171175
vsl|> List.iterSquared(accVal cenv env)
172176
baseValOpt|> Option.iter(accVal cenv env)
173177
ctorThisValOpt|> Option.iter(accVal cenv env)
@@ -198,23 +202,23 @@ and accSwitch cenv env (e, cases, dflt, _m) =
198202
andaccDiscrim cenv env d=
199203
match dwith
200204
| DecisionTreeTest.UnionCase(_ucref, tinst)-> accTypeInst cenv env tinst
201-
| DecisionTreeTest.ArrayLength(_, ty)-> accTy cenv env ty
205+
| DecisionTreeTest.ArrayLength(_, ty)-> accTy cenv envNonety
202206
| DecisionTreeTest.Const_
203207
| DecisionTreeTest.IsNull->()
204-
| DecisionTreeTest.IsInst(srcTy, tgtTy)-> accTy cenv env srcTy; accTy cenv env tgtTy
208+
| DecisionTreeTest.IsInst(srcTy, tgtTy)-> accTy cenv envNonesrcTy; accTy cenv env None tgtTy
205209
| DecisionTreeTest.ActivePatternCase(exp, tys,_,_,_,_)->
206210
accExpr cenv env exp
207211
accTypeInst cenv env tys
208212
| DecisionTreeTest.Error_->()
209213

210-
andaccAttrib cenv env(Attrib(_,_k,args,props,_,_,_m))=
214+
andaccAttrib cenv env(Attrib(_,_k,args,props,_,_,m))=
211215
args|> List.iter(fun(AttribExpr(expr1,expr2))->
212216
accExpr cenv env expr1
213217
accExpr cenv env expr2)
214218
props|> List.iter(fun(AttribNamedArg(_nm,ty,_flg,AttribExpr(expr,expr2)))->
215219
accExpr cenv env expr
216220
accExpr cenv env expr2
217-
accTy cenv env ty)
221+
accTy cenv env(Some m)ty)
218222

219223
andaccAttribs cenv env attribs=
220224
List.iter(accAttrib cenv env) attribs
@@ -229,7 +233,7 @@ and accArgReprInfo cenv env (argInfo: ArgReprInfo) =
229233
andaccVal cenv env v=
230234
v.Attribs|> accAttribs cenv env
231235
v.ValReprInfo|> Option.iter(accValReprInfo cenv env)
232-
v.Type|> accTy cenv env
236+
v.Type|> accTy cenv envNone
233237

234238
andaccBind cenv env(bind:Binding)=
235239
accVal cenv env bind.Var

‎src/Compiler/Checking/NameResolution.fs

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -541,8 +541,9 @@ let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.Impor
541541

542542
letcsharpStyleExtensionMembers=
543543
if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass|| tcrefOfStaticClass.IsLocalRefthen
544-
GetImmediateIntrinsicMethInfosOfType(None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty
545-
|> List.filter(IsMethInfoPlainCSharpStyleExtensionMember g mtrue)
544+
protectAssemblyExploration[](fun()->
545+
GetImmediateIntrinsicMethInfosOfType(None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty
546+
|> List.filter(IsMethInfoPlainCSharpStyleExtensionMember g mtrue))
546547
else
547548
[]
548549

@@ -2137,14 +2138,16 @@ type TcResultsSinkImpl(tcGlobals, ?sourceText: ISourceText) =
21372138
if allowedRange mthen
21382139
if replacethen
21392140
remove m
2140-
elifnot(isAlreadyDone endPos item m)then
2141+
2142+
ifnot(isAlreadyDone endPos item m)then
21412143
capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m))
21422144

21432145
membersink.NotifyMethodGroupNameResolution(endPos,item,itemMethodGroup,tpinst,occurenceType,nenv,ad,m,replace)=
21442146
if allowedRange mthen
21452147
if replacethen
21462148
remove m
2147-
elifnot(isAlreadyDone endPos item m)then
2149+
2150+
ifnot(isAlreadyDone endPos item m)then
21482151
capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m))
21492152
capturedMethodGroupResolutions.Add(CapturedNameResolution(itemMethodGroup,[], occurenceType, nenv, ad, m))
21502153

@@ -2724,6 +2727,36 @@ let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInf
27242727

27252728
leterrorTextF s=
27262729
match tryTcrefOfAppTy g tywith
2730+
| ValueSome tcrefwhen tcref.IsRecordTycon->
2731+
letalternative= nenv.eFieldLabels|> Map.tryFind nm
2732+
match alternativewith
2733+
| Some fieldLabels->
2734+
letfieldsOfResolvedType= tcref.AllFieldsArray|> Array.map(fun f-> f.LogicalName)|> Set.ofArray
2735+
letfieldsOfAlternatives=
2736+
fieldLabels
2737+
|> Seq.collect(fun l-> l.Tycon.AllFieldsArray|> Array.map(fun f-> f.LogicalName))
2738+
|> Set.ofSeq
2739+
letintersect= Set.intersect fieldsOfAlternatives fieldsOfResolvedType
2740+
2741+
ifnot intersect.IsEmptythen
2742+
letresolvedTypeName= NicePrint.fqnOfEntityRef g tcref
2743+
letnamesOfAlternatives=
2744+
fieldLabels
2745+
|> List.map(fun l-> $"%s{NicePrint.fqnOfEntityRef g l.TyconRef}")
2746+
|>fun names-> $"%s{resolvedTypeName}":: names
2747+
letcandidates= System.String.Join("\n", namesOfAlternatives)
2748+
letoverlappingNames=
2749+
intersect
2750+
|> Set.toArray
2751+
|> Array.sort
2752+
|> Array.map(fun s-> $"%s{s}")
2753+
|>fun a-> System.String.Join("\n", a)
2754+
if g.langVersion.SupportsFeature(LanguageFeature.WarningWhenMultipleRecdTypeChoice)then
2755+
warning(Error(FSComp.SR.tcMultipleRecdTypeChoice(candidates, resolvedTypeName, overlappingNames), m))
2756+
else
2757+
informationalWarning(Error(FSComp.SR.tcMultipleRecdTypeChoice(candidates, resolvedTypeName, overlappingNames), m))
2758+
|_->()
2759+
FSComp.SR.undefinedNameFieldConstructorOrMemberWhenTypeIsKnown(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars, s)
27272760
| ValueSome tcref->
27282761
FSComp.SR.undefinedNameFieldConstructorOrMemberWhenTypeIsKnown(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars, s)
27292762
|_->

‎src/Compiler/Checking/NicePrint.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2615,6 +2615,8 @@ let stringOfFSAttrib denv x = x |> PrintTypes.layoutAttrib denv |> squareAngleL
26152615

26162616
letstringOfILAttrib denv x= x|> PrintTypes.layoutILAttrib denv|> squareAngleL|> showL
26172617

2618+
letfqnOfEntityRef g x= x|> layoutTyconRefImplfalse(DisplayEnv.Empty g)|> showL
2619+
26182620
letlayoutImpliedSignatureOfModuleOrNamespace showHeader denv infoReader ad m contents=
26192621
InferredSigPrinting.layoutImpliedSignatureOfModuleOrNamespace showHeader denv infoReader ad m contents
26202622

‎src/Compiler/Checking/NicePrint.fsi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ val stringOfFSAttrib: denv: DisplayEnv -> x: Attrib -> string
135135

136136
val stringOfILAttrib: denv: DisplayEnv-> ILType* ILAttribElem list-> string
137137

138+
val fqnOfEntityRef: g: TcGlobals-> x: EntityRef-> string
139+
138140
val layoutImpliedSignatureOfModuleOrNamespace:
139141
showHeader: bool->
140142
denv: DisplayEnv->

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp