diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1f9c76d4095..298f547365c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -39,25 +39,25 @@ 194f32828726c3f1f63f79f3dc09b9e99c157b11 - + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization - 0e20c85562e8c4615c2a3a9e28371a34d9d0a398 + 9ecde9217bbd3541f1a9dc2d684b9acfa5f27274 - + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization - 0e20c85562e8c4615c2a3a9e28371a34d9d0a398 + 9ecde9217bbd3541f1a9dc2d684b9acfa5f27274 - + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization - 0e20c85562e8c4615c2a3a9e28371a34d9d0a398 + 9ecde9217bbd3541f1a9dc2d684b9acfa5f27274 - + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization - 0e20c85562e8c4615c2a3a9e28371a34d9d0a398 + 9ecde9217bbd3541f1a9dc2d684b9acfa5f27274 - + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization - 0e20c85562e8c4615c2a3a9e28371a34d9d0a398 + 9ecde9217bbd3541f1a9dc2d684b9acfa5f27274 diff --git a/eng/Versions.props b/eng/Versions.props index 34d16425e05..4ad1130ccd4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -209,10 +209,10 @@ 2.2.0 1.0.0-beta.23426.1 - 1.0.0-prerelease.23515.2 - 1.0.0-prerelease.23515.2 - 1.0.0-prerelease.23515.2 - 1.0.0-prerelease.23515.2 - 1.0.0-prerelease.23515.2 + 1.0.0-prerelease.23602.3 + 1.0.0-prerelease.23602.3 + 1.0.0-prerelease.23602.3 + 1.0.0-prerelease.23602.3 + 1.0.0-prerelease.23602.3 diff --git a/src/Compiler/Checking/NameResolution.fs b/src/Compiler/Checking/NameResolution.fs index 6544036b627..a4e45ff3b85 100644 --- a/src/Compiler/Checking/NameResolution.fs +++ b/src/Compiler/Checking/NameResolution.fs @@ -578,8 +578,8 @@ let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.Impor let pri = NextExtensionMethodPriority() if g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired) then - let csharpStyleExtensionMembers = - if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass || tcrefOfStaticClass.IsLocalRef then + let csharpStyleExtensionMembers = + if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass || (tcrefOfStaticClass.IsLocalRef && not tcrefOfStaticClass.IsTypeAbbrev) then protectAssemblyExploration [] (fun () -> let ty = generalizedTyconRef g tcrefOfStaticClass GetImmediateIntrinsicMethInfosOfType (None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty diff --git a/tests/AheadOfTime/Trimming/check.ps1 b/tests/AheadOfTime/Trimming/check.ps1 index 03827664f3e..373cd534ce2 100644 --- a/tests/AheadOfTime/Trimming/check.ps1 +++ b/tests/AheadOfTime/Trimming/check.ps1 @@ -43,5 +43,5 @@ function CheckTrim($root, $tfm, $outputfile, $expected_len) { CheckTrim -root "SelfContained_Trimming_Test" -tfm "net8.0" -outputfile "FSharp.Core.dll" -expected_len 288256 # Check net7.0 trimmed assemblies -CheckTrim -root "StaticLinkedFSharpCore_Trimming_Test" -tfm "net8.0" -outputfile "StaticLinkedFSharpCore_Trimming_Test.dll" -expected_len 8821760 +CheckTrim -root "StaticLinkedFSharpCore_Trimming_Test" -tfm "net8.0" -outputfile "StaticLinkedFSharpCore_Trimming_Test.dll" -expected_len 8822272 diff --git a/tests/FSharp.Compiler.ComponentTests/Language/ExtensionMethodTests.fs b/tests/FSharp.Compiler.ComponentTests/Language/ExtensionMethodTests.fs index 817b33a43d6..510ac830ae4 100644 --- a/tests/FSharp.Compiler.ComponentTests/Language/ExtensionMethodTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/Language/ExtensionMethodTests.fs @@ -609,3 +609,42 @@ type Bar = |> withReferences [ fsharp ] csharp |> compile |> shouldSucceed + + [] + let ``Abbreviated CSharp type with extensions`` () = + let csharp = + CSharp """ +namespace CSharpLib { + + public interface I + { + public int P { get; } + } + + public static class Ext + { + public static void M(this I i) + { + } + } +} + """ + |> withName "CSLib" + + let fsharp = + FSharp """ +module Module + +open CSharpLib + +module M = + type Ext2 = CSharpLib.Ext + + let f (i: I) = + i.M() +""" + |> withLangVersion80 + |> withName "FSLib" + |> withReferences [ csharp ] + + fsharp |> compile |> shouldSucceed