Skip to content

Commit 8968e4f

Browse files
xepaulforki
authored andcommitted
Added Tests
1 parent 3fd4931 commit 8968e4f

9 files changed

Lines changed: 71 additions & 29 deletions

File tree

src/fsharp/csolve.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1204,7 +1204,7 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) permitWeakResolution ndeep
12041204
let callerArgs = argtys |> List.map (fun argty -> CallerArg(argty,m,false,dummyExpr))
12051205
let minst = FreshenMethInfo m minfo
12061206
let objtys = minfo.GetObjArgTypes(amap, m, minst)
1207-
CalledMeth<Expr>(csenv.InfoReader,None,false,FreshenMethInfo,m,AccessibleFromEverywhere,minfo,minst,minst,None,objtys,[(callerArgs,[])],false,false))
1207+
CalledMeth<Expr>(csenv.InfoReader,None,false,FreshenMethInfo,m,AccessibleFromEverywhere,minfo,minst,minst,None,objtys,[(callerArgs,[])],false,false,None))
12081208

12091209
let methOverloadResult,errors =
12101210
CollectThenUndo (fun trace -> ResolveOverloading csenv (WithTrace(trace)) nm ndeep true (0,0) AccessibleFromEverywhere calledMethGroup false (Some rty))

src/fsharp/tc.fs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5775,7 +5775,7 @@ and TcCtorCall isNaked cenv env tpenv overallTy objTy mObjTyOpt item superInit a
57755775
| Some mObjTy,None -> AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env mObjTy methodName minfos
57765776
| None, _ -> AfterTcOverloadResolution.DoNothing
57775777

5778-
TcMethodApplicationThen cenv env overallTy tpenv None [] mWholeCall mItem methodName ad PossiblyMutates false meths afterTcOverloadResolution isSuperInit args ExprAtomicFlag.NonAtomic delayed
5778+
TcMethodApplicationThen cenv env overallTy (Some objTy) tpenv None [] mWholeCall mItem methodName ad PossiblyMutates false meths afterTcOverloadResolution isSuperInit args ExprAtomicFlag.NonAtomic delayed
57795779

57805780
| Item.DelegateCtor typ, [arg] ->
57815781
// Re-record the name resolution since we now know it's a constructor call
@@ -6137,7 +6137,7 @@ and TcObjectExpr cenv overallTy env tpenv (synObjTy,argopt,binds,extraImpls,mNew
61376137
let afterTcOverloadResolution = AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env synObjTy.Range methodName minfos
61386138
let ad = env.eAccessRights
61396139

6140-
let expr,tpenv = TcMethodApplicationThen cenv env objTy tpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterTcOverloadResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic []
6140+
let expr,tpenv = TcMethodApplicationThen cenv env objTy None tpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterTcOverloadResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic []
61416141
// The 'base' value is always bound
61426142
let baseIdOpt = (match baseIdOpt with None -> Some(ident("base",mObjTy)) | Some id -> Some(id))
61436143
expr,baseIdOpt,tpenv
@@ -8018,7 +8018,7 @@ and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution
80188018
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForMethods
80198019
match delayed with
80208020
| (DelayedApp (atomicFlag, arg, mExprAndArg)::otherDelayed) ->
8021-
TcMethodApplicationThen cenv env overallTy tpenv None [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
8021+
TcMethodApplicationThen cenv env overallTy None tpenv None [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
80228022

80238023
| (DelayedTypeApp(tys, mTypeArgs, mExprAndTypeArgs) :: DelayedApp(atomicFlag, arg, mExprAndArg) :: otherDelayed) ->
80248024

@@ -8037,9 +8037,9 @@ and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution
80378037

80388038
// NOTE: This doesn't take instantiation into account
80398039
CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs,env.NameEnv,item (* ! *), item, ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
8040-
TcMethodApplicationThen cenv env overallTy tpenv (Some tyargs) [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
8040+
TcMethodApplicationThen cenv env overallTy None tpenv (Some tyargs) [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
80418041
| _ ->
8042-
TcMethodApplicationThen cenv env overallTy tpenv None [] mItem mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [] ExprAtomicFlag.Atomic delayed
8042+
TcMethodApplicationThen cenv env overallTy None tpenv None [] mItem mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [] ExprAtomicFlag.Atomic delayed
80438043

80448044
| Item.CtorGroup(nm,minfos) ->
80458045
let objTy =
@@ -8206,14 +8206,14 @@ and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution
82068206
if isNil meths then error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm,mItem))
82078207
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm SettersOfPropInfos
82088208
// Note: static calls never mutate a struct object argument
8209-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt [] mStmt mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse (args@[e2]) ExprAtomicFlag.NonAtomic otherDelayed
8209+
TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt [] mStmt mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse (args@[e2]) ExprAtomicFlag.NonAtomic otherDelayed
82108210
| _ ->
82118211
// Static Property Get (possibly indexer)
82128212
let meths = pinfos |> GettersOfPropInfos
82138213
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm GettersOfPropInfos
82148214
if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable(nm),mItem))
82158215
// Note: static calls never mutate a struct object argument
8216-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt [] mItem mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse args ExprAtomicFlag.Atomic delayed
8216+
TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt [] mItem mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse args ExprAtomicFlag.Atomic delayed
82178217

82188218
| Item.ILField finfo ->
82198219

@@ -8352,7 +8352,7 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela
83528352
let tyargsOpt,tpenv = TcMemberTyArgsOpt cenv env tpenv tyargsOpt
83538353
let meths = minfos |> List.map (fun minfo -> minfo,None)
83548354

8355-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mExprAndItem mItem methodName ad mutates false meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
8355+
TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt objArgs mExprAndItem mItem methodName ad mutates false meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
83568356

83578357
| Item.Property (nm,pinfos) ->
83588358
// Instance property
@@ -8377,13 +8377,13 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela
83778377
if isNil meths then error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm,mItem))
83788378
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm SettersOfPropInfos
83798379
let mut = (if isStructTy cenv.g (tyOfExpr cenv.g objExpr) then DefinitelyMutates else PossiblyMutates)
8380-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mStmt mItem nm ad mut true meths afterTcOverloadResolution NormalValUse (args @ [e2]) atomicFlag []
8380+
TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt objArgs mStmt mItem nm ad mut true meths afterTcOverloadResolution NormalValUse (args @ [e2]) atomicFlag []
83818381
| _ ->
83828382
// Instance property getter
83838383
let meths = GettersOfPropInfos pinfos
83848384
if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable(nm),mItem))
83858385
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm GettersOfPropInfos
8386-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mExprAndItem mItem nm ad PossiblyMutates true meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
8386+
TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt objArgs mExprAndItem mItem nm ad PossiblyMutates true meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
83878387

83888388
| Item.RecdField rfinfo ->
83898389
// Get or set instance F# field or literal
@@ -8488,6 +8488,7 @@ and TcMethodApplicationThen
84888488
env
84898489
overallTy // The type of the overall expression including "delayed". THe method "application" may actually be a use of a member as
84908490
// a first-class function value, when this would be a function type.
8491+
objTyOpt // methodType
84918492
tpenv
84928493
callerTyArgs // The return type of the overall expression including "delayed"
84938494
objArgs // The 'obj' arguments in obj.M(...) and obj.M, if any
@@ -8514,7 +8515,7 @@ and TcMethodApplicationThen
85148515

85158516
// Call the helper below to do the real checking
85168517
let (expr,attributeAssignedNamedItems,delayed),tpenv =
8517-
TcMethodApplication false cenv env tpenv callerTyArgs objArgs mWholeExpr mItem methodName ad mut isProp meths afterTcOverloadResolution isSuperInit args exprTy delayed
8518+
TcMethodApplication false cenv env tpenv callerTyArgs objArgs mWholeExpr mItem methodName objTyOpt ad mut isProp meths afterTcOverloadResolution isSuperInit args exprTy delayed
85188519

85198520
// Give errors if some things couldn't be assigned
85208521
if nonNil attributeAssignedNamedItems then
@@ -8545,6 +8546,7 @@ and TcMethodApplication
85458546
mMethExpr // range of the entire method expression
85468547
mItem
85478548
methodName
8549+
(objTyOpt : TType option)
85488550
ad
85498551
mut
85508552
isProp
@@ -8741,7 +8743,7 @@ and TcMethodApplication
87418743
| Some tyargs -> minfo.AdjustUserTypeInstForFSharpStyleIndexedExtensionMembers(tyargs)
87428744
| None -> minst
87438745
let allArgs = List.zip unnamedCurriedCallerArgs namedCurriedCallerArgs
8744-
CalledMeth<SynExpr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall, FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,allArgs,usesParamArrayConversion,true)
8746+
CalledMeth<SynExpr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall, FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,allArgs,usesParamArrayConversion,true,objTyOpt)
87458747

87468748
let preArgumentTypeCheckingCalledMethGroup =
87478749
[ for (minfo,pinfoOpt) in candidateMethsAndProps do
@@ -8834,7 +8836,7 @@ and TcMethodApplication
88348836
| Some tyargs -> minfo.AdjustUserTypeInstForFSharpStyleIndexedExtensionMembers(tyargs)
88358837
| None -> minst
88368838
let callerArgs = List.zip unnamedCurriedCallerArgs namedCurriedCallerArgs
8837-
CalledMeth<Expr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall,FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true))
8839+
CalledMeth<Expr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall,FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true,objTyOpt))
88388840

88398841
let callerArgCounts = (unnamedCurriedCallerArgs.Length, namedCurriedCallerArgs.Length)
88408842
let csenv = MakeConstraintSolverEnv cenv.css mMethExpr denv
@@ -9713,7 +9715,7 @@ and TcAttribute cenv (env: TcEnv) attrTgt (synAttr: SynAttribute) =
97139715
let meths = minfos |> List.map (fun minfo -> minfo,None)
97149716
let afterTcOverloadResolution = AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env tyid.idRange methodName minfos
97159717
let (expr,namedCallerArgs,_),_ =
9716-
TcMethodApplication true cenv env tpenv None [] mAttr mAttr methodName ad PossiblyMutates false meths afterTcOverloadResolution NormalValUse [arg] (NewInferenceType ()) []
9718+
TcMethodApplication true cenv env tpenv None [] mAttr mAttr methodName None ad PossiblyMutates false meths afterTcOverloadResolution NormalValUse [arg] (NewInferenceType ()) []
97179719

97189720
UnifyTypes cenv env mAttr ty (tyOfExpr cenv.g expr)
97199721

src/fsharp/typrelns.fs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1643,7 +1643,8 @@ type CalledMeth<'T>
16431643
callerObjArgTys: TType list, // the types of the actual object argument, if any
16441644
curriedCallerArgs: (CallerArg<'T> list * CallerNamedArg<'T> list) list, // the data about any arguments supplied by the caller
16451645
allowParamArgs:bool, // do we allow the use of a param args method in its "expanded" form?
1646-
allowOutAndOptArgs: bool) // do we allow the use of the transformation that converts out arguments as tuple returns?
1646+
allowOutAndOptArgs: bool, // do we allow the use of the transformation that converts out arguments as tuple returns?
1647+
tyargsOpt : TType option) // method parameters
16471648
=
16481649
let g = infoReader.g
16491650
let methodRetTy = minfo.GetFSharpReturnTy(infoReader.amap, m, calledTyArgs)
@@ -1738,6 +1739,10 @@ type CalledMeth<'T>
17381739
let pminst = match minfo with
17391740
| MethInfo.FSMeth(_,TType.TType_app(_,types),_,_) -> types
17401741
| _ -> freshenMethInfo m pminfo
1742+
1743+
let pminst = match tyargsOpt with
1744+
| Some(TType.TType_app(_, types)) -> types
1745+
| _ -> pminst
17411746
Choice1Of2(AssignedItemSetter(id,AssignedPropSetter(pinfo,pminfo, pminst), e))
17421747
| _ ->
17431748
match infoReader.GetILFieldInfosOfType(Some(nm),ad,m,returnedObjTy) with

tests/RunTests.cmd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ if errorlevel 1 (
157157

158158
pushd %~dp0\fsharpqa\source
159159
echo perl %~dp0\fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results %RESULTFILE% -log %FAILFILE% -fail %FAILENV% -cleanup:yes %TTAGS_ARG% %NO_TTAGS_ARG% %PARALLEL_ARG%
160-
perl %~dp0\fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results %RESULTFILE% -log %FAILFILE% -fail %FAILENV% -cleanup:yes %TTAGS_ARG% %NO_TTAGS_ARG% %PARALLEL_ARG%
160+
perl %~dp0\fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results %RESULTFILE% -log %FAILFILE% -fail %FAILENV% -cleanup:no %TTAGS_ARG% %NO_TTAGS_ARG% %PARALLEL_ARG%
161161

162162
popd
163163
goto :EOF
@@ -196,4 +196,4 @@ xcopy /y "%nunitlocation%\lib\*.dll" "%FSCBINPATH%"
196196
echo nunit-console-x86.exe /nologo /result=%XMLFILE% /output=%OUTPUTFILE% /err=%ERRORFILE% /work=%RESULTSDIR% %FSCBINPATH%\Unittests.dll
197197
nunit-console-x86.exe /nologo /result=%XMLFILE% /output=%OUTPUTFILE% /err=%ERRORFILE% /work=%RESULTSDIR% %FSCBINPATH%\Unittests.dll
198198

199-
goto :EOF
199+
goto :EOF

tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/PropertySetterAfterConstruction01NamedExtensionsInheritance.fs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// #Regression #Conformance #DeclarationElements #MemberDefinitions #NamedArguments
22
#light
33

4-
// FSB 1368, named arguments implicitly using property setters for generic class do not typecheck correctly
5-
64
module GenericInheritedClass2 =
75
type R =
86
class
@@ -28,8 +26,7 @@ module GenericInheritedClassExt2 =
2826
member x.C with set v = v |> Seq.iter x.w.Add
2927

3028
// Standard construction
31-
let x1 = GenericInheritedClass2.S(1,"1",A = 2, B = "2",C = [ 3] )
32-
29+
let x1 = GenericInheritedClass2.S(1,"1", A = 2, B = "2",C = [ 3] )
3330
if x1.x <> 3 then exit 1
3431
if x1.y <> "21" then exit 1
3532
if x1.w.Count <> 1 then exit 1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// #Regression #Conformance #DeclarationElements #MemberDefinitions #NamedArguments
2+
#light
3+
4+
5+
module GenericClass =
6+
type S<'a,'b> =
7+
class
8+
val mutable x : 'a
9+
val mutable y : 'b
10+
member obj.X with set(v) = obj.x <- v
11+
member obj.Y with set(v) = obj.y <- v
12+
new(a,b) = { x=a; y=b }
13+
end
14+
type S<'a,'b> with
15+
member x.XProxyIntrinsic with set (v:'a) = x.X <- v
16+
member x.YProxyIntrinsic with set (v:'b) = x.Y <- v
17+
module GenericClassExt =
18+
19+
module Extensions =
20+
open GenericClass
21+
type S<'a,'b> with
22+
member x.XProxyOptional with set (v:'a) = x.X <- v
23+
member x.YProxyOptional with set (v:'b) = x.Y <- v
24+
25+
module Test =
26+
open GenericClassExt.Extensions
27+
open GenericClass
28+
let x1 = S<_,_>(1,"1", XProxyIntrinsic = 44, YProxyIntrinsic = "44")
29+
if x1.x <> 44 then exit 1
30+
if x1.y <> "44" then exit 1
31+
32+
let x3 = S<_,_>(1,"1", XProxyOptional = 44, YProxyOptional = "44")
33+
if x3.x <> 44 then exit 1
34+
if x3.y <> "44" then exit 1
35+
36+
exit 0

tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/PropertySetterAfterConstruction02NamedExtensions.fs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ module GenericClass =
2121
member x.YProxyOptional with set (v:'b) = x.Y <- v
2222

2323
open Extensions
24-
24+
2525
// Standard construction
2626
let x1 = S<int,string>(1,"1", XProxyIntrinsic = 42, YProxyIntrinsic = "42")
2727
if x1.x <> 42 then exit 1
@@ -32,9 +32,8 @@ module GenericClass =
3232
x2.YProxyOptional <- "43"
3333
if x2.x <> 43 then exit 1
3434
if x2.y <> "43" then exit 1
35-
35+
3636
let x3 = S<_,_>(1,"1", XProxyOptional = 44, YProxyOptional = "44")
3737
if x3.x <> 44 then exit 1
3838
if x3.y <> "44" then exit 1
3939
exit 0
40-

tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/env.lst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
SOURCE=mixNamedNonNamed.fs # mixNamedNonNamed.fs
88
SOURCE=refLibsHaveNamedParams.fs # refLibsHaveNamedParams.fs
99
SOURCE=E_NumParamMismatch01.fs # E_NumParamMismatch01.fs
10-
SOURCE=PropertySetterAfterConstruction01.fs # PropertySetterAfterConstruction01.fs
11-
SOURCE=PropertySetterAfterConstruction01NamedExtensions.fs # PropertySetterAfterConstruction01NamedExtensions.fs
10+
SOURCE=PropertySetterAfterConstruction01NamedExtensions.fs # PropertySetterAfterConstructionNamed01Extensions.fs
1211
SOURCE=PropertySetterAfterConstruction01NamedExtensionsInheritance.fs # PropertySetterAfterConstruction01NamedExtensionsInheritance.fs
13-
SOURCE=PropertySetterAfterConstruction02.fs # PropertySetterAfterConstruction02.fs
12+
SOURCE=PropertySetterAfterConstruction01NamedExtensionsOptional.fs # PropertySetterAfterConstruction01NamedExtensionsOptional.fs
13+
SOURCE=PropertySetterAfterConstruction02NamedExtensions.fs # PropertySetterAfterConstruction02NamedExtensions.fs
14+
SOURCE=PropertySetterAfterConstruction01.fs # PropertySetterAfterConstruction01.fs
15+
SOURCE=PropertySetterAfterConstruction02.fs # PropertySetterAfterConstruction02.fs
1416
SOURCE=E_MisspeltParam01.fs # E_MisspeltParam01.fs
15-
1617
SOURCE=E_MustBePrefix.fs # E_MustBePrefix.fs

tests/fsharpqa/Source/test.lst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ Conformance02 Conformance\DeclarationElements\ModuleAbbreviations
109109
Conformance02 Conformance\DeclarationElements\ObjectConstructors
110110
Conformance02 Conformance\DeclarationElements\P-invokeDeclarations
111111

112+
Conformance02.2 Conformance\DeclarationElements\MemberDefinitions\NamedArguments
113+
112114
Conformance03 Conformance\Expressions\ApplicationExpressions\Assertion
113115
Conformance03 Conformance\Expressions\ApplicationExpressions\BasicApplication
114116
Conformance03 Conformance\Expressions\ApplicationExpressions\ObjectConstruction

0 commit comments

Comments
 (0)