Skip to content

Commit a42481f

Browse files
authored
Merge pull request #1353 from dsyme/fix-1349
Fix 1349
2 parents 689c42f + c2e1ce3 commit a42481f

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/fsharp/TastOps.fs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5667,6 +5667,7 @@ let mkFolders (folders : _ ExprFolder) =
56675667
| Expr.Lambda(_lambdaId ,_ctorThisValOpt,_baseValOpt,_argvs,body,_m,_rty) -> exprF z body
56685668
| Expr.TyLambda(_lambdaId,_argtyvs,body,_m,_rty) -> exprF z body
56695669
| Expr.TyChoose(_,body,_) -> exprF z body
5670+
56705671
| Expr.App (f,_fty,_tys,argtys,_) ->
56715672
let z = exprF z f
56725673
let z = exprsF z argtys
@@ -5680,17 +5681,24 @@ let mkFolders (folders : _ ExprFolder) =
56805681
let z = exprF z body
56815682
z
56825683
| Expr.Link rX -> exprF z (!rX)
5684+
56835685
| Expr.Match (_spBind,_exprm,dtree,targets,_m,_ty) ->
56845686
let z = dtreeF z dtree
56855687
let z = Array.fold targetF z targets
56865688
z
5687-
| Expr.Quote(_e,{contents=Some(_typeDefs,_argTypes,argExprs,_)},_,_,_) -> exprsF z argExprs
5688-
| Expr.Quote(_e,{contents=None},_,_m,_) -> z
5689+
| Expr.Quote(e,{contents=Some(_typeDefs,_argTypes,argExprs,_)},_,_,_) ->
5690+
let z = exprF z e
5691+
exprsF z argExprs
5692+
5693+
| Expr.Quote(e,{contents=None},_,_m,_) ->
5694+
exprF z e
5695+
56895696
| Expr.Obj (_n,_typ,_basev,basecall,overrides,iimpls,_m) ->
56905697
let z = exprF z basecall
56915698
let z = List.fold tmethodF z overrides
56925699
let z = List.fold (foldOn snd (List.fold tmethodF)) z iimpls
56935700
z
5701+
56945702
| Expr.StaticOptimization (_tcs,csx,x,_) -> exprsF z [csx;x]
56955703

56965704
and valBindF dtree z bind =

tests/fsharp/core/quotes/test.fsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2718,6 +2718,15 @@ module ExtensionMembersWithSameName =
27182718
runAll()
27192719
#endif
27202720

2721+
module PartialApplicationLeadToInvalidCodeWhenOptimized =
2722+
let f () =
2723+
let x = 1
2724+
let g (y:int) (z:int) = <@ x @>
2725+
let _ = g 3 // the closure generated by this code was invalid
2726+
()
2727+
2728+
f ()
2729+
27212730
module TestAssemblyAttributes =
27222731
let attributes = System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(false)
27232732

0 commit comments

Comments
 (0)