@@ -850,6 +850,17 @@ let (|OptionalSequential|) e =
850
850
| SynExpr.Sequential( debugPoint = _ sp; isTrueSeq = true ; expr1 = dataComp1; expr2 = dataComp2) -> ( dataComp1, Some dataComp2)
851
851
| _ -> ( e, None)
852
852
853
+ [<return : Struct>]
854
+ let rec (| UnwrapUseBang | _ |) supportsUseBangBindingValueDiscard pat =
855
+ match pat with
856
+ | SynPat.Named( ident = SynIdent( id, _); isThisVal = false ) -> ValueSome( id, pat)
857
+ | SynPat.LongIdent( longDotId = SynLongIdent( id = [ id ])) -> ValueSome( id, pat)
858
+ | SynPat.Wild( m) when supportsUseBangBindingValueDiscard ->
859
+ let tmpIdent = mkSynId m " _"
860
+ ValueSome( tmpIdent, SynPat.Named( SynIdent( tmpIdent, None), false , None, m))
861
+ | SynPat.Paren( pat = UnwrapUseBang supportsUseBangBindingValueDiscard ( id, pat)) -> ValueSome( id, pat)
862
+ | _ -> ValueNone
863
+
853
864
[<return : Struct>]
854
865
let (| ExprAsUseBang | _ |) expr =
855
866
match expr with
@@ -1823,14 +1834,12 @@ let rec TryTranslateComputationExpression
1823
1834
requireBuilderMethod " Using" mBind cenv ceenv.env ceenv.ad ceenv.builderTy mBind
1824
1835
requireBuilderMethod " Bind" mBind cenv ceenv.env ceenv.ad ceenv.builderTy mBind
1825
1836
1837
+ let supportsUseBangBindingValueDiscard =
1838
+ ceenv.cenv.g.langVersion.SupportsFeature LanguageFeature.UseBangBindingValueDiscard
1839
+
1826
1840
let ident , pat =
1827
1841
match pat with
1828
- | SynPat.Named( ident = SynIdent( id, _); isThisVal = false ) -> id, pat
1829
- | SynPat.LongIdent( longDotId = SynLongIdent( id = [ id ])) -> id, pat
1830
- | SynPat.Wild( m) when ceenv.cenv.g.langVersion.SupportsFeature LanguageFeature.UseBangBindingValueDiscard ->
1831
- // Special handling for wildcard (_) patterns
1832
- let tmpIdent = mkSynId m " _"
1833
- tmpIdent, SynPat.Named( SynIdent( tmpIdent, None), false , None, m)
1842
+ | UnwrapUseBang supportsUseBangBindingValueDiscard ( ident, pat) -> ident, pat
1834
1843
| _ -> error ( Error( FSComp.SR.tcInvalidUseBangBinding (), pat.Range))
1835
1844
1836
1845
let bindExpr =
0 commit comments