Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dotnet] Stop suppressing trim analysis warnings. Fixes #21293. #21351

Merged
merged 11 commits into from
Oct 24, 2024

Conversation

rolfbjarne
Copy link
Member

@rolfbjarne rolfbjarne commented Oct 1, 2024

Our own code shouldn't produce trim analysis warnings anymore (see #10405), so we don't need to suppress trim analysis warnings for everyone.

Except: we still want to suppress trim analysis warnings if no assemblies are trimmed, because otherwise we'll get warnings for code that would otherwise be trimmed away.

On the other hand, we want trim analyzer always enabled, so that warnings are reported for user code.

The difference between "trim analyzer" and "trim analysis warnings" is that the former is an analyzer that analyzes the currently compiled code (which we always want), while the latter is reported by the trimmers, and as such will report warnings from all code, including all references.

This also required bumping Touch.Unit and MonoTouch.Dialog.

Fixes #21293.

Our own code shouldn't produce trim analysis warnings anymore (see #10405), so
we don't need to suppress trim analysis warnings for everyone.

Fixes #21293.
@rolfbjarne rolfbjarne added the do-not-merge Do not merge this pull request label Oct 1, 2024
@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@rolfbjarne rolfbjarne changed the base branch from net9.0 to main October 4, 2024 08:08
@rolfbjarne rolfbjarne removed the do-not-merge Do not merge this pull request label Oct 4, 2024
@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment was marked as outdated.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@rolfbjarne rolfbjarne changed the base branch from main to net10.0 October 14, 2024 14:30
@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

This reverts commit c0e0ee9.
@rolfbjarne rolfbjarne marked this pull request as ready for review October 16, 2024 20:12
@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build] Windows Integration Tests passed 💻

All Windows Integration Tests passed.

Pipeline on Agent
Hash: 770d2ee146331c028a7cf16b58bb3c6fc6c32dcf [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build] Tests on macOS M1 - Mac Monterey (12) passed 💻

All tests on macOS M1 - Mac Monterey (12) passed.

Pipeline on Agent
Hash: 770d2ee146331c028a7cf16b58bb3c6fc6c32dcf [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build] Tests on macOS X64 - Mac Sonoma (14) passed 💻

All tests on macOS X64 - Mac Sonoma (14) passed.

Pipeline on Agent
Hash: 770d2ee146331c028a7cf16b58bb3c6fc6c32dcf [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ API diff for current PR / commit

.NET (No breaking changes)

✅ API diff vs stable

.NET (No breaking changes)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: 770d2ee146331c028a7cf16b58bb3c6fc6c32dcf [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build] Tests on macOS M1 - Mac Ventura (13) passed 💻

All tests on macOS M1 - Mac Ventura (13) passed.

Pipeline on Agent
Hash: 770d2ee146331c028a7cf16b58bb3c6fc6c32dcf [PR build]

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2
Copy link
Collaborator

🚀 [CI Build] Test results 🚀

Test results

✅ All tests passed on VSTS: test results.

🎉 All 99 tests passed 🎉

Tests counts

✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (iOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. Html Report (VSDrops) Download
✅ fsharp: All 4 tests passed. Html Report (VSDrops) Download
✅ generator: All 1 tests passed. Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. Html Report (VSDrops) Download
✅ introspection: All 4 tests passed. Html Report (VSDrops) Download
✅ linker: All 40 tests passed. Html Report (VSDrops) Download
✅ monotouch (iOS): All 7 tests passed. Html Report (VSDrops) Download
✅ monotouch (MacCatalyst): All 8 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 9 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 7 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. Html Report (VSDrops) Download

Pipeline on Agent
Hash: 770d2ee146331c028a7cf16b58bb3c6fc6c32dcf [PR build]

@rolfbjarne rolfbjarne merged commit 51dae3b into net10.0 Oct 24, 2024
21 checks passed
@rolfbjarne rolfbjarne deleted the dev/rolf/dev/rolf/no-trimmer-warning-suppression branch October 24, 2024 12:40
jonathanpeppers added a commit to dotnet/maui that referenced this pull request Jan 22, 2025
Context: xamarin/xamarin-macios#21351

This will avoid some of the fallout of the above PR.
rmarinho added a commit to dotnet/maui that referenced this pull request Jan 23, 2025
* Build with .NET 10 successfully

Changes required:

* Get appropriate `net9` branded workload manifests from dotnet/runtime

* Fix NuGet package downgrades:

    src\SingleProject\Resizetizer\src\Resizetizer.csproj : error NU1605:
      Warning As Error: Detected package downgrade: System.Runtime.CompilerServices.Unsafe from 6.1.0 to 6.0.0. Reference the package directly from the project to select a different version.
       Microsoft.Maui.Resizetizer -> Microsoft.Bcl.AsyncInterfaces 10.0.0-alpha.1.25058.4 -> System.Threading.Tasks.Extensions 4.6.0 -> System.Runtime.CompilerServices.Unsafe (>= 6.1.0)
       Microsoft.Maui.Resizetizer -> System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
    src\Core\src\Core.csproj : error NU1605:
      Warning As Error: Detected package downgrade: System.Numerics.Vectors from 4.6.0 to 4.5.0. Reference the package directly from the project to select a different version.
       Microsoft.Maui.Core -> Microsoft.Extensions.Logging.Abstractions 10.0.0-alpha.1.25057.17 -> System.Memory 4.6.0 -> System.Numerics.Vectors (>= 4.6.0)
       Microsoft.Maui.Core -> System.Numerics.Vectors (>= 4.5.0)

* Update to iOS, tvOS, MacCatalyst 18.2

    10.0.100-alpha.1.25059.14\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(259,5):
    error NETSDK1140:
        18.0 is not a valid TargetPlatformVersion for MacCatalyst. Valid versions include:
        18.2
    10.0.100-alpha.1.25059.14\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(259,5):
    error NETSDK1140:
        18.0 is not a valid TargetPlatformVersion for iOS. Valid versions include:
        18.2

* Temporarily ignore `CS9270`:
  * dotnet/roslyn#76312
  * dotnet/roslyn#72133

    artifacts\obj\Controls.Core\Debug\net10.0\Microsoft.Maui.Controls.BindingSourceGen\Microsoft.Maui.Controls.BindingSourceGen.BindingSourceGenerator\D--src-maui-src-Controls-src-Core-BindableLayout-BindableLayout.cs-GeneratedBindingInterceptors-235-10.g.cs(43,4): error CS9270: 'InterceptsLocationAttribute(string, int, int)' is not supported. Move to 'InterceptableLocation'-based generation of these attributes instead. (dotnet/roslyn#72133)
    artifacts\obj\Controls.Core\Debug\net10.0\Microsoft.Maui.Controls.BindingSourceGen\Microsoft.Maui.Controls.BindingSourceGen.BindingSourceGenerator\D--src-maui-src-Controls-src-Core-ContentConverter.cs-GeneratedBindingInterceptors-72-13.g.cs(43,4): error CS9270: 'InterceptsLocationAttribute(string, int, int)' is not supported. Move to 'InterceptableLocation'-based generation of these attributes instead. (dotnet/roslyn#72133)
    artifacts\obj\Controls.Core\Debug\net10.0\Microsoft.Maui.Controls.BindingSourceGen\Microsoft.Maui.Controls.BindingSourceGen.BindingSourceGenerator\D--src-maui-src-Controls-src-Core-ContentConverter.cs-GeneratedBindingInterceptors-77-13.g.cs(43,4): error CS9270: 'InterceptsLocationAttribute(string, int, int)' is not supported. Move to 'InterceptableLocation'-based generation of these attributes instead. (dotnet/roslyn#72133)

* iOS API changes:

    error CS0618: 'CLLocation.AccurracyBestForNavigation' is obsolete: 'Use 'AccuracyBestForNavigation' instead.'

    Screenshot.ios.cs(57,69): error CS8602: Dereference of a possibly null reference.

    Platform\iOS\KeyboardAutoManagerScroll.cs(867,55): error CS8602: Dereference of a possibly null reference.

    src\Core\src\Platform\iOS\MauiSwipeView.cs(601,8): error CS8625: Cannot convert null literal to non-nullable reference type.
    src\Core\src\Platform\iOS\MauiSwipeView.cs(634,8): error CS8625: Cannot convert null literal to non-nullable reference type.

    ResignFirstResponderTouchGestureRecognizer.iOS.cs(70,12): error CS8600: Converting null literal or possible null value to non-nullable type.

    GesturePlatformManager.iOS.cs(282,21): error CS8602: Dereference of a possibly null reference.

Most notably:

* `UIView.Window` can be null.

* Typo in API fixed `AccurracyBestForNavigation` -> `AccuracyBestForNavigation`

* Disable tizen net10.0 temporarily

* TargetFramework=net10.0

* TargetFramework=net10.0

* Unused yaml: `TestTargetFrameworks`

* Update RunnerGenerator.cs

Workaround: dotnet/android@715a36a

* Put iOS simulator versions back to 18.0

* Update RunnerGenerator.cs

* Update xUnitSharedAttributes.cs

    D:\src\maui\src\TestUtils\src\TestShared\xUnitSharedAttributes.cs(75,89): error CS0117: 'DynamicallyAccessedMemberTypes' does not contain a definition for 'PublicParameterlessConstructors'
    D:\src\maui\src\TestUtils\src\TestShared\xUnitSharedAttributes.cs(83,63): error CS0117: 'DynamicallyAccessedMemberTypes' does not contain a definition for 'PublicParameterlessConstructors'

* Update Core.DeviceTests.Shared.csproj

* Update RunnerGenerator.cs

* Remove Tizen project

* Update ios.cake

* Update Core.DeviceTests.csproj

* Update android

* Update xcode

* Disable trimming warnings for now

* [iOS] Move to 18.2 simulators

* Ignore more warnings

* Ignore more warnings

* Update MainViewController.cs

* Ignore more warnings

* Disable more warnings

* Update xUnitSharedAttributes.cs

* Put trimmer warnings back

* EnableTrimAnalyzer=false for test projects across repo

* Make `EnableTizen()` a no-op

* Update Controls.DeviceTests.csproj

* Install `mobile-librarybuilder-net9`

Context: xamarin/xamarin-macios@cb13402

* Update WindowsTemplateTest.cs

* `mobile-librarybuilder-net9` on test lanes

* Update Essentials.Sample.csproj

* See if newer .NET SDK fixes maui-blazor

Context: dotnet/sdk@26fd6d1...60e9a46

I see a dotnet/aspnetcore bump in the diff.

* Essentials.Sample.csproj is a "sample project"

* > darc update-dependencies --id 252455

* Revert "Update RunnerGenerator.cs"

This reverts commit b9f32f6.

* Revert "Update RunnerGenerator.cs"

This reverts commit 9f6d36d.

* Revert "Update RunnerGenerator.cs"

This reverts commit 0f43f7d.

* darc update-dependencies --id 252613

* darc update-dependencies --coherency-only

* Update Version.Details.xml

* SuppressTrimAnalysisWarnings=true for test/sample projects

* Update Controls.DeviceTests.csproj

* Revert "Update Controls.DeviceTests.csproj"

This reverts commit 5ce0390.

* Disable iOS test for now

* Update provision.yml

* Update versions

* Update versions

* Revert "Update provision.yml"

This reverts commit 33a8ee5.

* Update LabelExtensions.cs

* Update ButtonTests.iOS.cs

* Try these new aspnet versions

* Update AssemblyInfoTests.cs

* $(TrimmerSingleWarn)=false

* Update MauiBlazorWebView.DeviceTests.csproj

* $(IsTestProject) -> $(MauiTestProject)

The old name conflicts with dotnet/arcade.

* Update Core.UnitTests.csproj

* Update MacTemplateTest.cs

* Update MacTemplateTest.cs

* Revert "Update MacTemplateTest.cs"

This reverts commit 7ed2b89.

* Revert "Update MacTemplateTest.cs"

This reverts commit 882c45e.

* EnableTrimAnalyzer=false for default projects

Context: xamarin/xamarin-macios#21351

This will avoid some of the fallout of the above PR.

* $(EnableTrimAnalyzer) take 2

* Update TestUtils.DeviceTests.Sample.csproj

* Update Microsoft.Maui.Controls.Common.targets

* Update Microsoft.Maui.Controls.Common.targets

* Update SimpleTemplateTest.cs

* Update Microsoft.Maui.Controls.Common.targets

* System.Text.Json.Serialization.Converters.EnumConverterFactory warning is gone

* Potential fix for M.E.DI failure

Fixes?

    [15:12:46.2484560] 2025-01-22 15:12:46.242709-0800 RunOniOSmauiRel1586373188[97228:54445246] Received unhandled Objective-C exception that was marshalled from a managed exception: A suitable constructor for type 'Microsoft.Maui.Hosting.FontsMauiAppBuilderExtensions+FontInitializer' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor. (System.InvalidOperationException)
[15:12:46.2484780]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache, ServiceIdentifier, Type, CallSiteChain) + 0x4de
[15:12:46.2485210]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor, ServiceIdentifier, CallSiteChain, Int32) + 0x1a5
[15:12:46.2485640]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateEnumerable(ServiceIdentifier, CallSiteChain) + 0x42f
[15:12:46.2485930]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite(ServiceIdentifier serviceIdentifier, CallSiteChain callSiteChain) + 0xfb
[15:12:46.2486100]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(ServiceIdentifier, CallSiteChain) + 0x92
[15:12:46.2486220]    at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(ServiceIdentifier serviceIdentifier) + 0x68
[15:12:46.2486330]    at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey, Func`2) + 0xdc
[15:12:46.2486790]    at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier, ServiceProviderEngineScope) + 0x39
[15:12:46.2486900]    at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider, Type) + 0x3d
[15:12:46.2487000]    at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider) + 0x2f
[15:12:46.2487100]    at Microsoft.Maui.MauiContextExtensions.InitializeAppServices(MauiApp) + 0x1b
[15:12:46.2487190]    at Microsoft.Maui.Hosting.MauiAppBuilder.Build() + 0x67
[15:12:46.2487420]    at Microsoft.Maui.MauiUIApplicationDelegate.WillFinishLaunching(UIApplication application, NSDictionary launchOptions) + 0x44
[15:12:46.2487530]    at RunOniOSmauiRel1586373188!<BaseAddress>+0xe200a

* Revert "Potential fix for M.E.DI failure"

This reverts commit 802e4c1.

* Update versions with CoherentParentDependency

* Update versions with coherent Microsoft.JSInterop

* Use strongly-typed Transient() for M.E.DI

* MauiVersionCurrent / MauiVersionPrevious

* Update FontsMauiAppBuilderExtensions.cs

* Revert "Update FontsMauiAppBuilderExtensions.cs"

This reverts commit 6b8e48a.

* Revert "Use strongly-typed Transient() for M.E.DI"

This reverts commit b0e0e45.

* Comment a few NativeAOT tests

---------

Co-authored-by: Rui Marinho <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Enable EnableTrimAnalyzer by default
3 participants