From 1899bcebc29d41d07aac01fa43196384a88a8acc Mon Sep 17 00:00:00 2001 From: "Kevin Ransom (msft)" Date: Tue, 27 Feb 2024 04:49:35 -0800 Subject: [PATCH 1/6] Fix 16105 - Release inline optimization leads to MethodAccessException if used with assembly:InternalsVisibleTo attribute (#16737) * Fix16105 * trimming * Update release notes --------- Co-authored-by: Vlad Zarytovskii --- .../.FSharp.Compiler.Service/8.0.300.md | 1 + src/Compiler/Optimize/Optimizer.fs | 43 ++- .../Debugger/PortablePdbs.fs | 11 +- .../EmittedIL/NoCompilerInlining.fs | 314 +++++++++++++++++- .../TypeExtensions/PropertyShadowingTests.fs | 12 +- ...dowFunctionPropertyWithExtensionMethod.fsx | 0 ...ionPropertyWithExtensionMethod.fsx.err.bsl | 0 ...tionPropertyWithExtensionMethod.fsx.il.bsl | 0 ...hadowFunctionPropertyWithTypeExtension.fsx | 0 ...ctionPropertyWithTypeExtension.fsx.err.bsl | 0 ...nctionPropertyWithTypeExtension.fsx.il.bsl | 0 ...adowIndexedPropertyWithExtensionMethod.fsx | 0 ...xedPropertyWithExtensionMethod.fsx.err.bsl | 0 ...exedPropertyWithExtensionMethod.fsx.il.bsl | 0 ...ShadowIndexedPropertyWithTypeExtension.fsx | 0 ...dexedPropertyWithTypeExtension.fsx.err.bsl | 0 ...ndexedPropertyWithTypeExtension.fsx.il.bsl | 0 .../E_NoChangeForEvent.fsx | 0 .../E_NoChangeForEvent.fsx.err.bsl | 0 .../E_NoChangeForEvent.fsx.il.bsl | 0 .../LinqCount.fsx | 0 .../LinqCount.fsx.il.bsl | 0 .../LinqCount.fsx.il.net472.bsl | 0 .../LinqCount.fsx.il.netcore.bsl | 0 .../LinqCount.fsx.support.added.later.err.bsl | 0 .../LinqCount.fsx.support.added.later.il.bsl | 0 .../ShadowStaticProperty.fsx | 0 .../ShadowStaticProperty.fsx.il.bsl | 0 ...icProperty.fsx.support.added.later.err.bsl | 0 ...ticProperty.fsx.support.added.later.il.bsl | 0 .../ShadowWithExtensionMethod.fsx | 0 .../ShadowWithExtensionMethod.fsx.err.bsl | 0 .../ShadowWithExtensionMethod.fsx.il.bsl | 0 ...sionMethod.fsx.support.added.later.err.bsl | 0 ...nsionMethod.fsx.support.added.later.il.bsl | 0 .../ShadowWithLastOpenedTypeExtensions.fsx | 0 ...owWithLastOpenedTypeExtensions.fsx.err.bsl | 0 ...dowWithLastOpenedTypeExtensions.fsx.il.bsl | 176 +++++----- ...Extensions.fsx.support.added.later.err.bsl | 0 ...eExtensions.fsx.support.added.later.il.bsl | 0 .../ShadowWithTypeExtension.fsx | 0 .../ShadowWithTypeExtension.fsx.err.bsl | 0 .../ShadowWithTypeExtension.fsx.il.bsl | 0 ...eExtension.fsx.support.added.later.err.bsl | 0 ...peExtension.fsx.support.added.later.il.bsl | 0 .../ShadowingAndStillOkWithChainedCalls.fsx | 0 ...wingAndStillOkWithChainedCalls.fsx.err.bsl | 0 ...owingAndStillOkWithChainedCalls.fsx.il.bsl | 0 ...ainedCalls.fsx.support.added.later.err.bsl | 0 ...hainedCalls.fsx.support.added.later.il.bsl | 0 tests/FSharp.Test.Utilities/Compiler.fs | 11 +- tests/FSharp.Test.Utilities/CompilerAssert.fs | 7 +- 52 files changed, 463 insertions(+), 112 deletions(-) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowFunctionPropertyWithTypeExtension.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowIndexedPropertyWithTypeExtension.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_NoChangeForEvent.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_NoChangeForEvent.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/E_NoChangeForEvent.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/LinqCount.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/LinqCount.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/LinqCount.fsx.il.net472.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/LinqCount.fsx.il.netcore.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/LinqCount.fsx.support.added.later.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/LinqCount.fsx.support.added.later.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowStaticProperty.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowStaticProperty.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowStaticProperty.fsx.support.added.later.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowStaticProperty.fsx.support.added.later.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithExtensionMethod.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithExtensionMethod.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithExtensionMethod.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithExtensionMethod.fsx.support.added.later.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithExtensionMethod.fsx.support.added.later.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithLastOpenedTypeExtensions.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithLastOpenedTypeExtensions.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithLastOpenedTypeExtensions.fsx.il.bsl (79%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithTypeExtension.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithTypeExtension.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithTypeExtension.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithTypeExtension.fsx.support.added.later.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowWithTypeExtension.fsx.support.added.later.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowingAndStillOkWithChainedCalls.fsx (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowingAndStillOkWithChainedCalls.fsx.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowingAndStillOkWithChainedCalls.fsx.il.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.err.bsl (100%) rename tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/{PropertyShadowing => Shadowing}/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.il.bsl (100%) diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md index 786a741dbfa..a0fb7f9b951 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md @@ -11,6 +11,7 @@ * `[]` member should not produce property symbol. ([Issue #16640](https://github.com/dotnet/fsharp/issues/16640), [PR #16658](https://github.com/dotnet/fsharp/pull/16658)) * Fix discriminated union initialization. ([#PR 16661](https://github.com/dotnet/fsharp/pull/16661)) * Allow calling method with both Optional and ParamArray. ([#PR 16688](https://github.com/dotnet/fsharp/pull/16688), [suggestions #1120](https://github.com/fsharp/fslang-suggestions/issues/1120)) +* Fix release inline optimization, which leads to MethodAccessException if used with `assembly:InternalsVisibleTo`` attribute. ([Issue #16105](https://github.com/dotnet/fsharp/issues/16105), ([PR #16737](https://github.com/dotnet/fsharp/pull/16737)) * Enforce AttributeTargets on let values and functions. ([PR #16692](https://github.com/dotnet/fsharp/pull/16692)) ### Added diff --git a/src/Compiler/Optimize/Optimizer.fs b/src/Compiler/Optimize/Optimizer.fs index fd3c85dd60b..afdc0616505 100644 --- a/src/Compiler/Optimize/Optimizer.fs +++ b/src/Compiler/Optimize/Optimizer.fs @@ -496,7 +496,7 @@ let rec IsPartialExprVal x = | TupleValue args | RecdValue (_, args) | UnionCaseValue (_, args) -> Array.exists IsPartialExprVal args | ConstValue _ | CurriedLambdaValue _ | ConstExprValue _ -> false | ValValue (_, a) - | SizeValue(_, a) -> IsPartialExprVal a + | SizeValue (_, a) -> IsPartialExprVal a let CheckInlineValueIsComplete (v: Val) res = if v.MustInline && IsPartialExprVal res then @@ -690,10 +690,25 @@ let GetInfoForVal cenv env m (vref: ValRef) = GetInfoForLocalValue cenv env vref.binding m else GetInfoForNonLocalVal cenv env vref + res +let GetInfoForValWithCheck cenv env m (vref: ValRef) = + let res = GetInfoForVal cenv env m vref check vref res |> ignore res +let IsPartialExpr cenv env m x = + let rec isPartialExpression x = + match x with + | Expr.App (func, _, _, args, _) -> func :: args |> Seq.exists isPartialExpression + | Expr.Lambda (_, _, _, _, expr, _, _) -> expr |> isPartialExpression + | Expr.Let (TBind (_,expr,_), body, _, _) -> expr :: [body] |> List.exists isPartialExpression + | Expr.LetRec (bindings, body, _, _) -> body :: (bindings |> List.map (fun (TBind (_,expr,_)) -> expr)) |> List.exists isPartialExpression + | Expr.Sequential (expr1, expr2, _, _) -> [expr1; expr2] |> Seq.exists isPartialExpression + | Expr.Val (vr, _, _) when not vr.IsLocalRef -> ((GetInfoForVal cenv env m vr).ValExprInfo) |> IsPartialExprVal + | _ -> false + isPartialExpression x + //------------------------------------------------------------------------- // Try to get information about values of particular types //------------------------------------------------------------------------- @@ -3062,11 +3077,14 @@ and TryOptimizeVal cenv env (vOpt: ValRef option, mustInline, inlineIfLambda, va failwith "tuple, union and record values cannot be marked 'inline'" | UnknownValue when mustInline -> - warning(Error(FSComp.SR.optValueMarkedInlineHasUnexpectedValue(), m)); None + warning(Error(FSComp.SR.optValueMarkedInlineHasUnexpectedValue(), m)) + None | _ when mustInline -> - warning(Error(FSComp.SR.optValueMarkedInlineCouldNotBeInlined(), m)); None - | _ -> None + warning(Error(FSComp.SR.optValueMarkedInlineCouldNotBeInlined(), m)) + None + + | _ -> None and TryOptimizeValInfo cenv env m vinfo = if vinfo.HasEffect then None else TryOptimizeVal cenv env (None, false, false, vinfo.Info, m) @@ -3089,7 +3107,7 @@ and OptimizeVal cenv env expr (v: ValRef, m) = let g = cenv.g - let valInfoForVal = GetInfoForVal cenv env m v + let valInfoForVal = GetInfoForValWithCheck cenv env m v match TryOptimizeVal cenv env (Some v, v.MustInline, v.InlineIfLambda, valInfoForVal.ValExprInfo, m) with | Some e -> @@ -3402,7 +3420,7 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) | _ -> false | _ -> false | _ -> false - | _ -> false + | _ -> false if isValFromLazyExtensions then None else @@ -3410,7 +3428,7 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) match finfo.Info with | ValValue(vref, _) -> vref.Attribs |> List.exists (fun a -> (IsSecurityAttribute g cenv.amap cenv.casApplied a m) || (IsSecurityCriticalAttribute g a)) - | _ -> false + | _ -> false if isSecureMethod then None else @@ -3421,6 +3439,13 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) if isGetHashCode then None else + let isApplicationPartialExpr = + match finfo.Info with + | ValValue (_, CurriedLambdaValue (_, _, _, expr, _) ) -> IsPartialExpr cenv env m expr + | _ -> false + + if isApplicationPartialExpr then None else + // Inlining lambda let f2R = CopyExprForInlining cenv false f2 m @@ -3597,8 +3622,8 @@ and OptimizeApplication cenv env (f0, f0ty, tyargs, args, m) = // This includes recursive calls to the function being defined (in which case we get a non-critical, closed-world tailcall). // Note we also have to check the argument count to ensure this is a direct call (or a partial application). let doesNotMakeCriticalTailcall = - vref.MakesNoCriticalTailcalls || - (let valInfoForVal = GetInfoForVal cenv env m vref in valInfoForVal.ValMakesNoCriticalTailcalls) || + vref.MakesNoCriticalTailcalls || + (let valInfoForVal = GetInfoForValWithCheck cenv env m vref in valInfoForVal.ValMakesNoCriticalTailcalls) || (match env.functionVal with | None -> false | Some (v, _) -> valEq vref.Deref v) if doesNotMakeCriticalTailcall then let numArgs = otherArgs.Length + newArgs.Length diff --git a/tests/FSharp.Compiler.ComponentTests/Debugger/PortablePdbs.fs b/tests/FSharp.Compiler.ComponentTests/Debugger/PortablePdbs.fs index ffd7336997a..767d1f75670 100644 --- a/tests/FSharp.Compiler.ComponentTests/Debugger/PortablePdbs.fs +++ b/tests/FSharp.Compiler.ComponentTests/Debugger/PortablePdbs.fs @@ -74,9 +74,7 @@ module Baz = Line 16, Col 20, Line 16, Col 22 Line 21, Col 20, Line 21, Col 22 ] - VerifyDocuments [ - Path.Combine(Environment.CurrentDirectory, "test.fs") - ] + VerifyDocuments [ "test.fs" ] ] [] @@ -100,9 +98,4 @@ module M = |> withPortablePdb |> compile |> shouldSucceed - |> verifyPdb [ - VerifyDocuments [ - Path.Combine(Environment.CurrentDirectory, "test.fsi") - Path.Combine(Environment.CurrentDirectory, "test.fs") - ] - ] + |> verifyPdb [ VerifyDocuments [ "test.fsi"; "test.fs" ] ] diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/NoCompilerInlining.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/NoCompilerInlining.fs index b798d155209..f9be4e7def9 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/NoCompilerInlining.fs +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/NoCompilerInlining.fs @@ -5,7 +5,319 @@ namespace EmittedIL open Xunit open FSharp.Test.Compiler -module ``NoCompilerInlining`` = +module NoCompilerInlining = + + [] + let ``Inline nested binding using internal value not available for cross module inlining``() = + + let outerModule = + FSharpWithFileName + "outerModule.fs" + """ +module internal OuterModule + open System.Runtime.CompilerServices + + [] + do () + + let helloWorld = "Hello World" + let sayOuterModuleHello (msg:string) = System.Console.WriteLine(msg) """ + |> withOptimize + |> asLibrary + |> withName "outerLibrary" + + let middleModule = + FSharpWithFileName + "middleModule.fs" + """ +module MiddleModule + let sayMiddleModuleHello () = + let msg = OuterModule.helloWorld + OuterModule.sayOuterModuleHello(msg)""" + |> withOptimize + |> withReferences [outerModule] + |> asLibrary + |> withName "middleModule" + + FSharpWithFileName + "program.fs" + """MiddleModule.sayMiddleModuleHello()""" + |> withOptimize + |> withReferences [middleModule; outerModule] + |> withName "Program" + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void [middleModule]MiddleModule::sayMiddleModuleHello() + IL_0005: ret + } +""" ] + + [] + let ``Methods marked internal not available for cross module inlining``() = + + let outerModule = + FSharpWithFileName + "outerModule.fs" + """ +module internal OuterModule + open System.Runtime.CompilerServices + + [] + do () + + let sayOuterModuleHello () = System.Console.WriteLine("Hello World") """ + |> withOptimize + |> asLibrary + |> withName "outerLibrary" + + let middleModule = + FSharpWithFileName + "middleModule.fs" + """ +module MiddleModule + let sayMiddleModuleHello () = OuterModule.sayOuterModuleHello()""" + |> withOptimize + |> withReferences [outerModule] + |> asLibrary + |> withName "middleModule" + + FSharpWithFileName + "program.fs" + """MiddleModule.sayMiddleModuleHello()""" + |> withOptimize + |> withReferences [middleModule; outerModule] + |> withName "Program" + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void [middleModule]MiddleModule::sayMiddleModuleHello() + IL_0005: ret + } +""" ] + + [] + let ``Methods marked internal not available for cross module inlining 2``() = + + let outerModule = + FSharpWithFileName + "outerModule.fs" + """ +module public OuterModule + open System.Runtime.CompilerServices + + [] + do () + + let sayOuterModuleHello () = System.Console.WriteLine("Hello World") """ + |> withOptimize + |> asLibrary + |> withName "outerLibrary" + + let middleModule = + FSharpWithFileName + "middleModule.fs" + """ +module MiddleModule + let sayMiddleModuleHello () = + let x = 1 + let y = 2 + System.Console.WriteLine("x + y: {0} + {1} = ", x, y) + OuterModule.sayOuterModuleHello()""" + |> withOptimize + |> withReferences [outerModule] + |> asLibrary + |> withName "middleModule" + + FSharpWithFileName + "program.fs" + """MiddleModule.sayMiddleModuleHello()""" + |> withOptimize + |> withReferences [middleModule; outerModule] + |> withName "Program" + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ldstr "x + y: {0} + {1} = " + IL_0005: ldc.i4.1 + IL_0006: box [runtime]System.Int32 + IL_000b: ldc.i4.2 + IL_000c: box [runtime]System.Int32 + IL_0011: call void [runtime]System.Console::WriteLine(string, + object, + object) + IL_0016: ldstr "Hello World" + IL_001b: call void [runtime]System.Console::WriteLine(string) + IL_0020: ret + } +""" ] + + + [] + let ``Methods marked public available for cross module inlining``() = + + let outerModule = + FSharpWithFileName + "outerModule.fs" + """ +module OuterModule + open System.Runtime.CompilerServices + + let sayOuterModuleHello () = System.Console.WriteLine("Hello World") """ + |> withOptimize + |> asLibrary + |> withName "outerLibrary" + + let middleModule = + FSharpWithFileName + "middleModule.fs" + """ +module MiddleModule + let sayMiddleModuleHello () = OuterModule.sayOuterModuleHello()""" + |> withOptimize + |> withReferences [outerModule] + |> asLibrary + |> withName "middleModule" + + FSharpWithFileName + "program.fs" + """MiddleModule.sayMiddleModuleHello()""" + |> withOptimize + |> withReferences [middleModule; outerModule] + |> withName "Program" + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ldstr "Hello World" + IL_0005: call void [runtime]System.Console::WriteLine(string) + IL_000a: ret + } +""" ] + + + [] + let ``Nested Module marked internal not available for cross module inlining``() = + + let outerModule = + FSharpWithFileName + "outerModule.fs" + """ +module OuterModule + open System.Runtime.CompilerServices + + [] + do () + + module internal nestedModule = + let sayNestedModuleHello () = System.Console.WriteLine("Hello World") + + let sayOuterModuleHello () = nestedModule.sayNestedModuleHello () """ + |> withOptimize + |> asLibrary + |> withName "outerLibrary" + + let middleModule = + FSharpWithFileName + "middleModule.fs" + """ +module MiddleModule + let sayMiddleModuleHello () = OuterModule.sayOuterModuleHello()""" + |> withOptimize + |> withReferences [outerModule] + |> asLibrary + |> withName "middleModule" + + FSharpWithFileName + "program.fs" + """MiddleModule.sayMiddleModuleHello()""" + |> withOptimize + |> withReferences [middleModule; outerModule] + |> withName "Program" + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ldstr "Hello World" + IL_0005: call void [runtime]System.Console::WriteLine(string) + IL_000a: ret + } +""" ] + + [] + let ``Nested Module marked public available for cross module inlining``() = + + let outerModule = + FSharpWithFileName + "outerModule.fs" + """ +module OuterModule + open System.Runtime.CompilerServices + + module nestedModule = + let sayNestedModuleHello () = System.Console.WriteLine("Hello World") + + let sayOuterModuleHello () = nestedModule.sayNestedModuleHello () """ + |> withOptimize + |> asLibrary + |> withName "outerLibrary" + + let middleModule = + FSharpWithFileName + "middleModule.fs" + """ +module MiddleModule + let sayMiddleModuleHello () = OuterModule.sayOuterModuleHello()""" + |> withOptimize + |> withReferences [outerModule] + |> asLibrary + |> withName "middleModule" + + FSharpWithFileName + "program.fs" + """MiddleModule.sayMiddleModuleHello()""" + |> withOptimize + |> withReferences [middleModule; outerModule] + |> withName "Program" + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ldstr "Hello World" + IL_0005: call void [runtime]System.Console::WriteLine(string) + IL_000a: ret + } +""" ] + + + [] let ``Function marked with NoCompilerInlining is not inlined by the compiler``() = FSharp """ diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowingTests.fs b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowingTests.fs index fe178ad1975..eefb9cf7a98 100644 --- a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowingTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowingTests.fs @@ -1,9 +1,9 @@ -module FSharp.Compiler.ComponentTests.TypeChecks.TypeExtensions.PropertyShadowingTests +module FSharp.Compiler.ComponentTests.TypeChecks.TypeExtensions.Shadowing open Xunit open FSharp.Test open FSharp.Test.Compiler -let [] folder = __SOURCE_DIRECTORY__ + "/PropertyShadowing" +let [] folder = __SOURCE_DIRECTORY__ + "/Shadowing" [] folder = __SOURCE_DIRECTORY__ + "/PropertyShadowing" "ShadowWithLastOpenedTypeExtensions.fsx" |] )>] -let ``can hide property`` compilation = +let PropertyHidding compilation = compilation |> asFsx |> withOptions ["--langversion:preview"] @@ -38,7 +38,7 @@ let ``can hide property`` compilation = |] , BaselineSuffix = ".support.added.later" )>] -let ``cannot hide property v7.0 support added later`` compilation = +let ``PropertyHiding v7.0`` compilation = compilation |> asFsx |> withOptions ["--langversion:7.0"] @@ -57,7 +57,7 @@ let ``cannot hide property v7.0 support added later`` compilation = "E_NoChangeForEvent.fsx" |] )>] -let ``cannot hide property`` compilation = +let ``PropertyHiding fails`` compilation = compilation |> asFsx |> withOptions ["--langversion:preview"] @@ -77,7 +77,7 @@ let ``cannot hide property`` compilation = "E_NoChangeForEvent.fsx" |] )>] -let ``cannot hide property v7.0`` compilation = +let ``PropertyHidingFails v7.0`` compilation = compilation |> asFsx |> withOptions ["--langversion:7.0"] diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithExtensionMethod.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowFunctionPropertyWithTypeExtension.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithExtensionMethod.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_CannotShadowIndexedPropertyWithTypeExtension.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_NoChangeForEvent.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_NoChangeForEvent.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_NoChangeForEvent.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_NoChangeForEvent.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_NoChangeForEvent.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_NoChangeForEvent.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_NoChangeForEvent.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_NoChangeForEvent.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_NoChangeForEvent.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_NoChangeForEvent.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/E_NoChangeForEvent.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/E_NoChangeForEvent.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.il.net472.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.il.net472.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.il.net472.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.il.netcore.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.il.netcore.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.il.netcore.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.support.added.later.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.support.added.later.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.support.added.later.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.support.added.later.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.support.added.later.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.support.added.later.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/LinqCount.fsx.support.added.later.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/LinqCount.fsx.support.added.later.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx.support.added.later.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx.support.added.later.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx.support.added.later.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx.support.added.later.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx.support.added.later.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx.support.added.later.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowStaticProperty.fsx.support.added.later.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowStaticProperty.fsx.support.added.later.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.support.added.later.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.support.added.later.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.support.added.later.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.support.added.later.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.support.added.later.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.support.added.later.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithExtensionMethod.fsx.support.added.later.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithExtensionMethod.fsx.support.added.later.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.il.bsl similarity index 79% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.il.bsl index 2244a998dae..a0e89588014 100644 --- a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.il.bsl +++ b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.il.bsl @@ -45,8 +45,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field static assembly int32 x .field static assembly int32 init@4 - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -57,8 +56,7 @@ IL_0008: ret } - .method public specialname static int32 - get_X() cil managed + .method public specialname static int32 get_X() cil managed { .maxstack 8 @@ -74,8 +72,7 @@ IL_0016: ret } - .method public specialname static void - set_X(int32 v) cil managed + .method public specialname static void set_X(int32 v) cil managed { .maxstack 8 @@ -92,8 +89,7 @@ IL_0017: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -118,8 +114,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed + .method assembly specialname rtspecialname instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -133,8 +128,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn - Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed { .maxstack 8 @@ -156,8 +150,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed + .method assembly specialname rtspecialname instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +164,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn - Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed { .maxstack 8 @@ -191,8 +183,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> { .field static assembly initonly class assembly/todo1@18 @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -203,8 +194,7 @@ IL_0006: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> - Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed { .maxstack 6 @@ -234,8 +224,7 @@ IL_0037: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -253,8 +242,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed + .method assembly specialname rtspecialname instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -268,8 +256,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn - Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed { .maxstack 8 @@ -291,8 +278,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed + .method assembly specialname rtspecialname instance void .ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -306,8 +292,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn - Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.AsyncReturn Invoke(valuetype [FSharp.Core]Microsoft.FSharp.Control.AsyncActivation`1> ctxt) cil managed { .maxstack 8 @@ -326,8 +311,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> { .field static assembly initonly class assembly/todo2@37 @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -338,8 +322,7 @@ IL_0006: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> - Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed { .maxstack 6 @@ -369,8 +352,7 @@ IL_0037: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -413,8 +395,7 @@ } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> - get_todo1() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> get_todo1() cil managed { .maxstack 8 @@ -422,8 +403,7 @@ IL_0005: ret } - .method assembly specialname static valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 - get_matchValue@25() cil managed + .method assembly specialname static valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 get_matchValue@25() cil managed { .maxstack 8 @@ -431,8 +411,15 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> - get_todo2() cil managed + .method assembly specialname static class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> get_computation@25() cil managed + { + + .maxstack 8 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> ''.$assembly$fsx::computation@25 + IL_0005: ret + } + + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> get_todo2() cil managed { .maxstack 8 @@ -440,8 +427,7 @@ IL_0005: ret } - .method assembly specialname static valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 - 'get_matchValue@44-1'() cil managed + .method assembly specialname static valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'get_matchValue@44-1'() cil managed { .maxstack 8 @@ -449,6 +435,14 @@ IL_0005: ret } + .method assembly specialname static class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> 'get_computation@44-1'() cil managed + { + + .maxstack 8 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> ''.$assembly$fsx::'computation@44-1' + IL_0005: ret + } + .property class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> todo1() { @@ -461,6 +455,12 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) .get valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 assembly::get_matchValue@25() } + .property class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> + computation@25() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> assembly::get_computation@25() + } .property class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> todo2() { @@ -473,6 +473,12 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) .get valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 assembly::'get_matchValue@44-1'() } + .property class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> + 'computation@44-1'() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> assembly::'get_computation@44-1'() + } } .class private abstract auto ansi sealed ''.$assembly$fsx @@ -482,16 +488,19 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly initonly valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 matchValue@25 .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly initonly class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> computation@25 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly initonly class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> todo2@35 .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly initonly valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 'matchValue@44-1' .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly initonly class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> 'computation@44-1' + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly int32 init@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 5 @@ -505,48 +514,52 @@ IL_0018: callvirt instance class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1 [FSharp.Core]Microsoft.FSharp.Control.FSharpAsyncBuilder::Delay>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) IL_001d: stsfld class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> ''.$assembly$fsx::todo1@16 IL_0022: call class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> assembly::get_todo1() - IL_0027: ldnull - IL_0028: ldnull - IL_0029: call !!0 [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync::RunSynchronously>(class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, + IL_0027: stsfld class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> ''.$assembly$fsx::computation@25 + IL_002c: call class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> assembly::get_computation@25() + IL_0031: ldnull + IL_0032: ldnull + IL_0033: call !!0 [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync::RunSynchronously>(class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1) - IL_002e: stsfld valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::matchValue@25 - IL_0033: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::matchValue@25 - IL_0038: call instance int32 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_Tag() - IL_003d: ldc.i4.1 - IL_003e: bne.un.s IL_0042 - - IL_0040: br.s IL_0044 - - IL_0042: br.s IL_0053 - - IL_0044: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::matchValue@25 - IL_0049: call instance !1 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_ErrorValue() - IL_004e: call void [runtime]System.Environment::Exit(int32) - IL_0053: call class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsyncBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_DefaultAsyncBuilder() - IL_0058: ldsfld class assembly/todo2@37 assembly/todo2@37::@_instance - IL_005d: callvirt instance class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1 [FSharp.Core]Microsoft.FSharp.Control.FSharpAsyncBuilder::Delay>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_0062: stsfld class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> ''.$assembly$fsx::todo2@35 - IL_0067: call class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> assembly::get_todo2() - IL_006c: ldnull - IL_006d: ldnull - IL_006e: call !!0 [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync::RunSynchronously>(class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, + IL_0038: stsfld valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::matchValue@25 + IL_003d: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::matchValue@25 + IL_0042: call instance int32 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_Tag() + IL_0047: ldc.i4.1 + IL_0048: bne.un.s IL_004c + + IL_004a: br.s IL_004e + + IL_004c: br.s IL_005d + + IL_004e: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::matchValue@25 + IL_0053: call instance !1 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_ErrorValue() + IL_0058: call void [runtime]System.Environment::Exit(int32) + IL_005d: call class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsyncBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_DefaultAsyncBuilder() + IL_0062: ldsfld class assembly/todo2@37 assembly/todo2@37::@_instance + IL_0067: callvirt instance class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1 [FSharp.Core]Microsoft.FSharp.Control.FSharpAsyncBuilder::Delay>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) + IL_006c: stsfld class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> ''.$assembly$fsx::todo2@35 + IL_0071: call class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> assembly::get_todo2() + IL_0076: stsfld class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> ''.$assembly$fsx::'computation@44-1' + IL_007b: call class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1> assembly::'get_computation@44-1'() + IL_0080: ldnull + IL_0081: ldnull + IL_0082: call !!0 [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync::RunSynchronously>(class [FSharp.Core]Microsoft.FSharp.Control.FSharpAsync`1, class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1, class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1) - IL_0073: stsfld valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::'matchValue@44-1' - IL_0078: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::'matchValue@44-1' - IL_007d: call instance int32 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_Tag() - IL_0082: ldc.i4.1 - IL_0083: bne.un.s IL_0087 + IL_0087: stsfld valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::'matchValue@44-1' + IL_008c: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::'matchValue@44-1' + IL_0091: call instance int32 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_Tag() + IL_0096: ldc.i4.1 + IL_0097: bne.un.s IL_009b - IL_0085: br.s IL_0089 + IL_0099: br.s IL_009d - IL_0087: br.s IL_0098 + IL_009b: br.s IL_00ac - IL_0089: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::'matchValue@44-1' - IL_008e: call instance !1 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_ErrorValue() - IL_0093: call void [runtime]System.Environment::Exit(int32) - IL_0098: ret + IL_009d: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2 ''.$assembly$fsx::'matchValue@44-1' + IL_00a2: call instance !1 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpResult`2::get_ErrorValue() + IL_00a7: call void [runtime]System.Environment::Exit(int32) + IL_00ac: ret } } @@ -555,3 +568,4 @@ + diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithLastOpenedTypeExtensions.fsx.support.added.later.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.support.added.later.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.support.added.later.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.support.added.later.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.support.added.later.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.support.added.later.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.support.added.later.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowWithTypeExtension.fsx.support.added.later.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowWithTypeExtension.fsx.support.added.later.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.il.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.err.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.err.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.err.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.err.bsl diff --git a/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.il.bsl b/tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.il.bsl similarity index 100% rename from tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/PropertyShadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.il.bsl rename to tests/FSharp.Compiler.ComponentTests/TypeChecks/TypeExtensions/Shadowing/ShadowingAndStillOkWithChainedCalls.fsx.support.added.later.il.bsl diff --git a/tests/FSharp.Test.Utilities/Compiler.fs b/tests/FSharp.Test.Utilities/Compiler.fs index c29d0958801..0f79fbcbad8 100644 --- a/tests/FSharp.Test.Utilities/Compiler.fs +++ b/tests/FSharp.Test.Utilities/Compiler.fs @@ -366,6 +366,10 @@ module rec Compiler = let FSharp (source: string) : CompilationUnit = Fs source + let FSharpWithFileName name (source: string) : CompilationUnit = + fsFromString (SourceCodeFileKind.Fs({FileName=name; SourceText=Some source })) + |> FS + let FsFromPath (path: string) : CompilationUnit = fsFromString (SourceFromPath path) |> FS @@ -1362,12 +1366,13 @@ Actual: if documents <> expectedDocuments then failwith $"Expected documents are different from PDB.\nExpected: %A{expectedDocuments}\nActual: %A{documents}" - let private verifyPdbOptions reader options = + let private verifyPdbOptions optOutputPath reader options = + let outputPath = Path.GetDirectoryName(optOutputPath |> Option.defaultValue ".") for option in options do match option with | VerifyImportScopes scopes -> verifyPdbImportTables reader scopes | VerifySequencePoints sp -> verifySequencePoints reader sp - | VerifyDocuments docs -> verifyDocuments reader docs + | VerifyDocuments docs -> verifyDocuments reader (docs |> List.map(fun doc -> Path.Combine(outputPath, doc))) | _ -> failwith $"Unknown verification option: {option.ToString()}" let private verifyPortablePdb (result: CompilationOutput) options : unit = @@ -1386,7 +1391,7 @@ Actual: | _ -> failwith "Only F# compilations are supported when verifying PDBs." verifyPdbFormat reader compilationType - verifyPdbOptions reader options + verifyPdbOptions result.OutputPath reader options | _ -> failwith "Output path is not set, please make sure compilation was successfull." () diff --git a/tests/FSharp.Test.Utilities/CompilerAssert.fs b/tests/FSharp.Test.Utilities/CompilerAssert.fs index e7d56f247dd..a97b214acde 100644 --- a/tests/FSharp.Test.Utilities/CompilerAssert.fs +++ b/tests/FSharp.Test.Utilities/CompilerAssert.fs @@ -439,9 +439,10 @@ module rec CompilerAssertHelpers = | Some text -> // In memory source file copy it to the build directory let source = item.ChangeExtension - File.WriteAllText (source.GetSourceFileName, text) - disposals.Add(disposeFile source.GetSourceFileName) - yield source + let destFileName = Path.Combine(outputDirectory.FullName, Path.GetFileName(source.GetSourceFileName)) + File.WriteAllText (destFileName, text) + disposals.Add(disposeFile destFileName) + yield source.WithFileName(destFileName) | None -> // On Disk file let sourceFileName = item.GetSourceFileName From 2e95cbcc2cdf0317df6d5724cd62b15da4cea02b Mon Sep 17 00:00:00 2001 From: dawe Date: Tue, 27 Feb 2024 15:18:33 +0100 Subject: [PATCH 2/6] fix wrong range start of INTERP_STRING_END (#16774) * fix wrong range start of INTERP_STRING_END * add release notes entry --------- Co-authored-by: Adam Boniecki <20281641+abonie@users.noreply.github.com> --- .../.FSharp.Compiler.Service/8.0.300.md | 1 + src/Compiler/Service/FSharpCheckerResults.fs | 2 +- src/Compiler/Service/ServiceLexing.fs | 12 ++-- src/Compiler/SyntaxTree/LexHelpers.fs | 2 +- src/Compiler/SyntaxTree/ParseHelpers.fs | 4 +- src/Compiler/SyntaxTree/ParseHelpers.fsi | 2 +- src/Compiler/lex.fsl | 62 ++++++++++--------- src/Compiler/pars.fsy | 11 +++- ...tringWithTripleQuoteMultipleDollars.fs.bsl | 2 +- ...edStringWithTripleQuoteMultipleDollars2.fs | 2 + ...ringWithTripleQuoteMultipleDollars2.fs.bsl | 18 ++++++ 11 files changed, 75 insertions(+), 43 deletions(-) create mode 100644 tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs create mode 100644 tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs.bsl diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md index a0fb7f9b951..5507157222e 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md @@ -1,5 +1,6 @@ ### Fixed +* Fix wrong range start of INTERP_STRING_END. ([PR #16774](https://github.com/dotnet/fsharp/pull/16774)) * Fix missing warning for recursive calls in list comprehensions. ([PR #16652](https://github.com/dotnet/fsharp/pull/16652)) * Code generated files with > 64K methods and generated symbols crash when loaded. Use infered sequence points for debugging. ([Issue #16399](https://github.com/dotnet/fsharp/issues/16399), [#PR 16514](https://github.com/dotnet/fsharp/pull/16514)) * `nameof Module` expressions and patterns are processed to link files in `--test:GraphBasedChecking`. ([PR #16550](https://github.com/dotnet/fsharp/pull/16550), [PR #16743](https://github.com/dotnet/fsharp/pull/16743)) diff --git a/src/Compiler/Service/FSharpCheckerResults.fs b/src/Compiler/Service/FSharpCheckerResults.fs index 045e0aae7a0..dda21fffd39 100644 --- a/src/Compiler/Service/FSharpCheckerResults.fs +++ b/src/Compiler/Service/FSharpCheckerResults.fs @@ -2685,7 +2685,7 @@ module internal ParseAndCheckFile = | INTERP_STRING_BEGIN_PART _ | INTERP_STRING_PART _ as tok, _ -> let braceOffset = match tok with - | INTERP_STRING_BEGIN_PART(_, SynStringKind.TripleQuote, (LexerContinuation.Token(_, (_, _, dl, _) :: _))) -> + | INTERP_STRING_BEGIN_PART(_, SynStringKind.TripleQuote, (LexerContinuation.Token(_, (_, _, dl, _, _) :: _))) -> dl - 1 | _ -> 0 diff --git a/src/Compiler/Service/ServiceLexing.fs b/src/Compiler/Service/ServiceLexing.fs index 66893ac950e..bc967f30dbe 100644 --- a/src/Compiler/Service/ServiceLexing.fs +++ b/src/Compiler/Service/ServiceLexing.fs @@ -36,7 +36,7 @@ module FSharpTokenTag = tagOfToken (INTERP_STRING_BEGIN_PART("a", SynStringKind.Regular, LexCont.Default)) let INTERP_STRING_PART = tagOfToken (INTERP_STRING_PART("a", LexCont.Default)) - let INTERP_STRING_END = tagOfToken (INTERP_STRING_END("a", LexCont.Default)) + let INTERP_STRING_END = tagOfToken (INTERP_STRING_END("a", None, LexCont.Default)) let LPAREN = tagOfToken LPAREN let RPAREN = tagOfToken RPAREN let LBRACK = tagOfToken LBRACK @@ -493,7 +493,7 @@ module internal LexerStateEncoding = | INTERP_STRING_BEGIN_PART(_, _, cont) | INTERP_STRING_PART(_, cont) | INTERP_STRING_BEGIN_END(_, _, cont) - | INTERP_STRING_END(_, cont) + | INTERP_STRING_END(_, _, cont) | LBRACE cont | RBRACE cont | BYTEARRAY(_, _, cont) @@ -621,12 +621,12 @@ module internal LexerStateEncoding = let tag1, i1, kind1, rest = match stringNest with | [] -> false, 0, 0, [] - | (i1, kind1, _, _) :: rest -> true, i1, encodeStringStyle kind1, rest + | (i1, kind1, _, _, _) :: rest -> true, i1, encodeStringStyle kind1, rest let tag2, i2, kind2 = match rest with | [] -> false, 0, 0 - | (i2, kind2, _, _) :: _ -> true, i2, encodeStringStyle kind2 + | (i2, kind2, _, _, _) :: _ -> true, i2, encodeStringStyle kind2 (if tag1 then 0b100000000000 else 0) ||| (if tag2 then 0b010000000000 else 0) @@ -696,9 +696,9 @@ module internal LexerStateEncoding = let nest = [ if tag1 then - i1, decodeStringStyle kind1, 0, range0 + i1, decodeStringStyle kind1, 0, None, range0 if tag2 then - i2, decodeStringStyle kind2, 0, range0 + i2, decodeStringStyle kind2, 0, None, range0 ] nest diff --git a/src/Compiler/SyntaxTree/LexHelpers.fs b/src/Compiler/SyntaxTree/LexHelpers.fs index 02d4da364d4..5ee9a16c90b 100644 --- a/src/Compiler/SyntaxTree/LexHelpers.fs +++ b/src/Compiler/SyntaxTree/LexHelpers.fs @@ -190,7 +190,7 @@ type LexerStringFinisher = else if isPart then INTERP_STRING_PART(s, cont) else - INTERP_STRING_END(s, cont) + INTERP_STRING_END(s, None, cont) elif kind.IsByteString then let synByteStringKind = if isVerbatim then diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/Compiler/SyntaxTree/ParseHelpers.fs index cd4b41787e1..d90e395c0c9 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -308,7 +308,7 @@ type LexerStringKind = /// Represents the degree of nesting of '{..}' and the style of the string to continue afterwards, in an interpolation fill. /// Nesting counters and styles of outer interpolating strings are pushed on this stack. -type LexerInterpolatedStringNesting = (int * LexerStringStyle * int * range) list +type LexerInterpolatedStringNesting = (int * LexerStringStyle * int * range option * range) list /// The parser defines a number of tokens for whitespace and /// comments eliminated by the lexer. These carry a specification of @@ -973,7 +973,7 @@ let checkEndOfFileError t = match nesting with | [] -> () - | (_, _, _, m) :: _ -> reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedStringFill ()) + | (_, _, _, _, m) :: _ -> reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedStringFill ()) type BindingSet = BindingSetPreAttrs of range * bool * bool * (SynAttributes -> SynAccess option -> SynAttributes * SynBinding list) * range diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fsi b/src/Compiler/SyntaxTree/ParseHelpers.fsi index 9add16af683..a8d61f3cb7e 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fsi +++ b/src/Compiler/SyntaxTree/ParseHelpers.fsi @@ -118,7 +118,7 @@ type LexerStringKind = static member String: LexerStringKind -type LexerInterpolatedStringNesting = (int * LexerStringStyle * int * range) list +type LexerInterpolatedStringNesting = (int * LexerStringStyle * int * range option * range) list [] type LexerContinuation = diff --git a/src/Compiler/lex.fsl b/src/Compiler/lex.fsl index 995f3fe09c0..958c2fa51ea 100644 --- a/src/Compiler/lex.fsl +++ b/src/Compiler/lex.fsl @@ -120,7 +120,7 @@ let checkExprGreaterColonOp (lexbuf:UnicodeLexing.Lexbuf) = let unexpectedChar lexbuf = LEX_FAILURE (FSComp.SR.lexUnexpectedChar(lexeme lexbuf)) -let startString args (lexbuf: UnicodeLexing.Lexbuf) = +let startString args (lexbuf: UnicodeLexing.Lexbuf) altStartForStringEnd = let buf = ByteBuffer.Create StringCapacity let m = lexbuf.LexemeRange let startp = lexbuf.StartPos @@ -160,7 +160,7 @@ let startString args (lexbuf: UnicodeLexing.Lexbuf) = if isPart then INTERP_STRING_PART (s, cont) else - INTERP_STRING_END (s, cont) + INTERP_STRING_END (s, altStartForStringEnd, cont) else let s = Lexhelp.stringBufferAsString buf let synStringKind = @@ -587,12 +587,12 @@ rule token (args: LexArgs) (skip: bool) = parse else mlOnly m args skip lexbuf } | '"' - { let buf, fin, m = startString args lexbuf + { let buf, fin, m = startString args lexbuf None // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _ - | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> () + | (_, LexerStringStyle.ExtendedInterpolated, _, _, _) :: _ + | (_, LexerStringStyle.TripleQuote, _, _, _) :: _ -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | [] -> () @@ -600,7 +600,7 @@ rule token (args: LexArgs) (skip: bool) = parse else singleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } | '$' '"' '"' '"' - { let buf, fin, m = startString args lexbuf + { let buf, fin, m = startString args lexbuf None // Single quote in triple quote ok, others disallowed match args.stringNest with @@ -612,7 +612,7 @@ rule token (args: LexArgs) (skip: bool) = parse else tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf } | ('$'+) '"' '"' '"' - { let buf, fin, m = startString args lexbuf + { let buf, fin, m = startString args lexbuf None if lexbuf.SupportsFeature LanguageFeature.ExtendedStringInterpolation then // Single quote in triple quote ok, others disallowed @@ -635,11 +635,11 @@ rule token (args: LexArgs) (skip: bool) = parse } | '$' '"' - { let buf,fin,m = startString args lexbuf + { let buf,fin,m = startString args lexbuf None // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () + | (_, style, _, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () @@ -649,7 +649,7 @@ rule token (args: LexArgs) (skip: bool) = parse singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf } | '"' '"' '"' - { let buf, fin, m = startString args lexbuf + { let buf, fin, m = startString args lexbuf None args.interpolationDelimiterLength <- 0 @@ -664,12 +664,12 @@ rule token (args: LexArgs) (skip: bool) = parse tripleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } | '@' '"' - { let buf, fin, m = startString args lexbuf + { let buf, fin, m = startString args lexbuf None // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _ - | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> () + | (_, LexerStringStyle.ExtendedInterpolated, _, _, _) :: _ + | (_, LexerStringStyle.TripleQuote, _, _, _) :: _ -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () @@ -679,11 +679,11 @@ rule token (args: LexArgs) (skip: bool) = parse verbatimString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } | ("$@" | "@$") '"' - { let buf, fin, m = startString args lexbuf + { let buf, fin, m = startString args lexbuf None // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () + | (_, style, _, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () @@ -888,10 +888,10 @@ rule token (args: LexArgs) (skip: bool) = parse { match args.stringNest with | [] -> () - | (counter, style, d, m) :: rest -> + | (counter, style, d, _, m) :: rest -> // Note, we do not update the 'm', any incomplete-interpolation error // will be reported w.r.t. the first '{' - args.stringNest <- (counter + 1, style, d, m) :: rest + args.stringNest <- (counter + 1, style, d, None, m) :: rest // To continue token-by-token lexing may involve picking up the new args.stringNes let cont = LexCont.Token(args.ifdefStack, args.stringNest) LBRACE cont @@ -904,12 +904,17 @@ rule token (args: LexArgs) (skip: bool) = parse // We encounter a '}' in the expression token stream. First check if we're in an interpolated string expression // and continue the string if necessary match args.stringNest with - | (1, LexerStringStyle.ExtendedInterpolated, delimLength, r) :: rest when delimLength > 1 -> - args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, delimLength - 1, r) :: rest + | (1, LexerStringStyle.ExtendedInterpolated, delimLength, altR, r) :: rest when delimLength > 1 -> + // On the first "}" of multiple "}", keep the range of the starting "}" for later processing in startString + let altStart = + match altR with + | None -> Some lexbuf.LexemeRange + | _ -> altR + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, delimLength - 1, altStart, r) :: rest token args skip lexbuf - | (1, style, _, _) :: rest -> + | (1, style, _, altR, _r) :: rest -> args.stringNest <- rest - let buf, fin, m = startString args lexbuf + let buf, fin, m = startString args lexbuf altR if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, style, LexerStringKind.InterpolatedStringPart, args.interpolationDelimiterLength, m)) else @@ -918,11 +923,10 @@ rule token (args: LexArgs) (skip: bool) = parse | LexerStringStyle.SingleQuote -> singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf | LexerStringStyle.TripleQuote -> tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf | LexerStringStyle.ExtendedInterpolated -> extendedInterpolatedString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf - - | (counter, style, d, m) :: rest -> + | (counter, style, d, altR, m) :: rest -> // Note, we do not update the 'm', any incomplete-interpolation error // will be reported w.r.t. the first '{' - args.stringNest <- (counter - 1, style, d, m) :: rest + args.stringNest <- (counter - 1, style, d, altR, m) :: rest let cont = LexCont.Token(args.ifdefStack, args.stringNest) RBRACE cont @@ -1260,7 +1264,7 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) = parse if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.SingleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.SingleQuote, args.interpolationDelimiterLength, None, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind LexerStringFinisherContext.InterpolatedPart cont else @@ -1376,7 +1380,7 @@ and verbatimString (sargs: LexerStringArgs) (skip: bool) = parse if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.Verbatim, args.interpolationDelimiterLength, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.Verbatim, args.interpolationDelimiterLength, None, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.Verbatim) cont else @@ -1495,7 +1499,7 @@ and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) = parse if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.TripleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.TripleQuote, args.interpolationDelimiterLength, None, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont else @@ -1600,7 +1604,7 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) = parse let maxBraces = 2 * args.interpolationDelimiterLength - 1 if numBraces > maxBraces then let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, None, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) fail args lexbuf (FSComp.SR.lexTooManyLBracesInTripleQuote()) @@ -1621,7 +1625,7 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) = parse String.replicate extraBraces "{" |> addUnicodeString buf // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, None, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont } diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 4080fc7ec8b..36e8d0838c8 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -38,7 +38,7 @@ let parse_error_rich = Some(fun (ctxt: ParseErrorContext<_>) -> %token INTERP_STRING_BEGIN_END %token INTERP_STRING_BEGIN_PART %token INTERP_STRING_PART -%token INTERP_STRING_END +%token INTERP_STRING_END %token LBRACE RBRACE %token KEYWORD_STRING // Like __SOURCE_DIRECTORY__ @@ -6774,7 +6774,14 @@ interpolatedStringFill: interpolatedStringParts: | INTERP_STRING_END - { [ SynInterpolatedStringPart.String(fst $1, rhs parseState 1) ] } + { + let (s, altStart, _) = $1 + let mOrig = rhs parseState 1 + let m = + match altStart with + | Some r -> unionRanges r mOrig + | None -> mOrig + [ SynInterpolatedStringPart.String(s, m) ] } | INTERP_STRING_PART interpolatedStringFill interpolatedStringParts { SynInterpolatedStringPart.String(fst $1, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr $2 :: $3 } diff --git a/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars.fs.bsl b/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars.fs.bsl index 8fbc4d9d76c..e59b33d951a 100644 --- a/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars.fs.bsl +++ b/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars.fs.bsl @@ -20,7 +20,7 @@ ImplFile FillExpr (Const (Int32 41, (2,21--2,23)), None); String (" = ", (2,25--2,32)); FillExpr (Const (Int32 6, (2,32--2,33)), None); - String (" * 7", (2,35--2,43))], TripleQuote, (2,8--2,43)), + String (" * 7", (2,33--2,43))], TripleQuote, (2,8--2,43)), (2,4--2,5), Yes (2,0--2,43), { LeadingKeyword = Let (2,0--2,3) InlineKeyword = None EqualsRange = Some (2,6--2,7) })], diff --git a/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs b/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs new file mode 100644 index 00000000000..d3eb8c7b5a1 --- /dev/null +++ b/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs @@ -0,0 +1,2 @@ + +$$$"""{{{5}}}""" \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs.bsl b/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs.bsl new file mode 100644 index 00000000000..152cb27e9b3 --- /dev/null +++ b/tests/service/data/SyntaxTree/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs.bsl @@ -0,0 +1,18 @@ +ImplFile + (ParsedImplFileInput + ("/root/String/SynExprInterpolatedStringWithTripleQuoteMultipleDollars2.fs", + false, + QualifiedNameOfFile + SynExprInterpolatedStringWithTripleQuoteMultipleDollars2, [], [], + [SynModuleOrNamespace + ([SynExprInterpolatedStringWithTripleQuoteMultipleDollars2], false, + AnonModule, + [Expr + (InterpolatedString + ([String ("", (2,0--2,9)); + FillExpr (Const (Int32 5, (2,9--2,10)), None); + String ("", (2,10--2,16))], TripleQuote, (2,0--2,16)), + (2,0--2,16))], PreXmlDocEmpty, [], None, (2,0--2,16), + { LeadingKeyword = None })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) From b1bf840c7d1d594d393d4342c8833c1e364cd2ef Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 28 Feb 2024 11:17:50 +0100 Subject: [PATCH 3/6] Update dependencies from https://github.com/dotnet/arcade build 20240223.1 (#16776) Microsoft.DotNet.Arcade.Sdk From Version 8.0.0-beta.24113.2 -> To Version 8.0.0-beta.24123.1 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Kevin Ransom (msft) --- eng/Version.Details.xml | 4 ++-- eng/common/templates/steps/generate-sbom.yml | 2 +- global.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c30f8e1630b..3d7412cec47 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -30,9 +30,9 @@ - + https://github.com/dotnet/arcade - da98edc4c3ea539f109ea320672136ceb32591a7 + 042763a811fd94dc3556253d4c64118dd665216e diff --git a/eng/common/templates/steps/generate-sbom.yml b/eng/common/templates/steps/generate-sbom.yml index a06373f38fa..2b21eae4273 100644 --- a/eng/common/templates/steps/generate-sbom.yml +++ b/eng/common/templates/steps/generate-sbom.yml @@ -5,7 +5,7 @@ # IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. parameters: - PackageVersion: 7.0.0 + PackageVersion: 8.0.0 BuildDropPath: '$(Build.SourcesDirectory)/artifacts' PackageName: '.NET' ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom diff --git a/global.json b/global.json index 1f759399b06..c784c02c369 100644 --- a/global.json +++ b/global.json @@ -17,7 +17,7 @@ "perl": "5.38.0.1" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24113.2", + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24123.1", "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2" } } From 2e0104ff3226c4f7a2f4612f2376ff802f6431bf Mon Sep 17 00:00:00 2001 From: dawe Date: Wed, 28 Feb 2024 11:20:05 +0100 Subject: [PATCH 4/6] remove superseded test of TryGetRecentCheckResultsForFile (#16770) * remove superseded test of TryGetRecentCheckResultsForFile * kick CI --- tests/service/ProjectAnalysisTests.fs | 60 --------------------------- 1 file changed, 60 deletions(-) diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs index 901484b6a1c..b5324d5611b 100644 --- a/tests/service/ProjectAnalysisTests.fs +++ b/tests/service/ProjectAnalysisTests.fs @@ -5462,66 +5462,6 @@ type A(i:int) = | Some decl -> failwithf "unexpected declaration %A" decl | None -> failwith "declaration list is empty" -[] -// [] // Flaky, reenable when stable -[] -let ``TryGetRecentCheckResultsForFile called with snapshot returns cached result after ParseAndCheckFile`` useTransparentCompiler = - let fileName1 = Path.ChangeExtension(tryCreateTemporaryFileName (), ".fs") - let base2 = tryCreateTemporaryFileName () - let dllName = Path.ChangeExtension(base2, ".dll") - let projFileName = Path.ChangeExtension(base2, ".fsproj") - let fileSource1Text = """ -type A(i:int) = - member x.Value = i -""" - let fileSource1 = SourceText.ofString fileSource1Text - FileSystem.OpenFileForWriteShim(fileName1).Write(fileSource1Text) - - let fileNames = [|fileName1|] - let args = mkProjectCommandLineArgs (dllName, []) - let checker = FSharpChecker.Create(useTransparentCompiler=useTransparentCompiler) - let options = { checker.GetProjectOptionsFromCommandLineArgs (projFileName, args) with SourceFiles = fileNames } - let snapshot = FSharpProjectSnapshot.FromOptions(options, DocumentSource.FileSystem) |> Async.RunImmediate - - let rbefore = checker.TryGetRecentCheckResultsForFile(fileName1, snapshot) - match rbefore with - | Some(fileResults, checkFileResults) -> failwith "cached results before ParseAndCheckFileInProject was called" - | None -> () - - checker.ParseAndCheckFileInProject(fileName1, snapshot) |> Async.RunImmediate - |> function - | _, FSharpCheckFileAnswer.Succeeded(res) -> () - | _ -> failwithf "Parsing aborted unexpectedly..." - - let rafterCheckResults = checker.TryGetRecentCheckResultsForFile(fileName1, snapshot) - match rafterCheckResults with - | Some(fileResults, checkFileResults) -> () - | None -> failwith "no results from TryGetRecentCheckResultsForFile" - - let fileSource1TextEdited = """ -type A(i:int) = - member x.Value = i - member x.Value2 = 23 -""" - let fileSource1Edited = SourceText.ofString fileSource1TextEdited - FileSystem.OpenFileForWriteShim(fileName1).Write(fileSource1TextEdited) - let snapshotAfterFileEdit = FSharpProjectSnapshot.FromOptions(options, DocumentSource.FileSystem) |> Async.RunImmediate - - let rafterEditBefore2ndCheckResults = checker.TryGetRecentCheckResultsForFile(fileName1, snapshotAfterFileEdit) - match rafterEditBefore2ndCheckResults with - | Some(fileResults, checkFileResults) -> failwith "stale cache results from TryGetRecentCheckResultsForFile after edit" - | None -> () - - checker.ParseAndCheckFileInProject(fileName1, snapshotAfterFileEdit) |> Async.RunImmediate - |> function - | _, FSharpCheckFileAnswer.Succeeded(res) -> () - | _ -> failwithf "Parsing aborted unexpectedly..." - - let rafterEditAfter2ndCheckResults = checker.TryGetRecentCheckResultsForFile(fileName1, snapshotAfterFileEdit) - match rafterEditAfter2ndCheckResults with - | Some(fileResults, checkFileResults) -> () - | None -> failwith "no results from TryGetRecentCheckResultsForFile" - [] [] [] From 5c9a049044c40cc907e4550566e6911d73fbea49 Mon Sep 17 00:00:00 2001 From: Vlad Zarytovskii Date: Wed, 28 Feb 2024 12:45:12 +0100 Subject: [PATCH 5/6] Allow e2e tests to fail for now --- azure-pipelines.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d3ccdd3792f..fe20d6c6c33 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -140,6 +140,8 @@ stages: NativeToolsOnMachine: true - script: .\tests\EndToEndBuildTests\EndToEndBuildTests.cmd -c $(_BuildConfig) displayName: End to end build tests + continueOnError: true + condition: always() - task: PublishTestResults@2 displayName: Publish Test Results inputs: From ecce0b625d75989d21b8137e19604532e646a62c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 28 Feb 2024 12:46:39 +0100 Subject: [PATCH 6/6] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240227.2 (#16777) Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 9.0.0-alpha.1.24123.3 -> To Version 9.0.0-alpha.1.24127.2 Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3d7412cec47..492625d9bb9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,9 +1,9 @@ - + https://github.com/dotnet/source-build-reference-packages - 62fb9a85e5c4af657b0014fd6d6588c139d0bb4f + 6d28b5a26876f8f22dadb8f6cdee878faaa88464