Skip to content

[NativeAOT] Remove unnecessary [DynamicDependency] attributes - #18808

Merged
rolfbjarne merged 5 commits into
dotnet:net8.0from
simonrozsival:fix-apply-preserve-attribute-invalid-dynamic-dependency-attributes
Aug 28, 2023
Merged

rolfbjarne merged 5 commits into
dotnet:net8.0from
simonrozsival:fix-apply-preserve-attribute-invalid-dynamic-dependency-attributes

Conversation

@simonrozsival

Copy link
Copy Markdown
Member

This is a follow-up to #18666

This PR resolves the following warnings that I've seen in build logs when running MySingleView with NativeAOT:

ILLink : warning IL2034: <Module>..cctor(): The 'DynamicDependencyAttribute' could not be analyzed. [/..../xamarin/xamarin-macios/tests/dotnet/MySingleView/MySingleView.csproj]
ILLink : warning IL2034: <Module>..cctor(): The 'DynamicDependencyAttribute' could not be analyzed. [/..../xamarin/xamarin-macios/tests/dotnet/MySingleView/MySingleView.csproj]
...

The generated module cctor code looks like this:

internal class <Module>
{
	[DynamicDependency("InvokeConformsToProtocol(ObjCRuntime.NativeHandle)", typeof(NSObject))]
	[DynamicDependency("Foundation.NSObject", null)]
	[DynamicDependency("ConformsToProtocol(ObjCRuntime.NativeHandle)", typeof(NSObject))]
	[DynamicDependency("Foundation.NSObject", null)]
        // ...
	static <Module>()
	{
		// ...
	}
}

The [DynamicDependency("T", null)] attributes are invalid. We could change them to [DynamicDependency(DynamicallyAccessedMemberTypes.None, typeof(T))] but I think that attribute is redundant because the type itself is always already preserved through the attribute that precedes it with a selector of one of its methods/fields.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

if (member is null || member.DeclaringType is null)
return;

Mark (member.DeclaringType, null);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the original code to mark Preserved code, so I'm not sure I'm comfortable with that.

Could we instead just skip adding the attribute in the AddDynamicDependencyAttribute method below instead?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, I will change the PR to only skip the DynamicDependency attribute and keep the original marking logic.

@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.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Your code has been reformatted. ⚠️

If this is not desired, add the actions-disable-autoformat label, and revert the reformatting commit.

If files unrelated to your change were modified, try reverting the reformatting commit + merging with the target branch (and push those changes).

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

πŸ’» [PR Build] Tests on macOS M1 - Mac Ventura (13.0) passed πŸ’»

βœ… All tests on macOS M1 - Mac Ventura (13.0) passed.

Pipeline on Agent
Hash: [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

πŸ’» [PR Build] Tests on macOS M1 - Mac Big Sur (11.5) passed πŸ’»

βœ… All tests on macOS M1 - Mac Big Sur (11.5) passed.

Pipeline on Agent
Hash: [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

πŸ’» [CI Build] Windows Integration Tests passed πŸ’»

βœ… All Windows Integration Tests passed.

Pipeline on Agent
Hash: dccceb05d22759e819365a10e701aad6fb386f9d [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

πŸ“š [PR Build] Artifacts πŸ“š

Packages generated

View packages

Pipeline on Agent
Hash: [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

βœ… API diff for current PR / commit

Legacy Xamarin (No breaking changes)
  • iOS (no change detected)
  • tvOS (no change detected)
  • watchOS (no change detected)
  • macOS (no change detected)
NET (empty diffs)
  • iOS: (empty diff detected)
  • tvOS: (empty diff detected)
  • MacCatalyst: (empty diff detected)
  • macOS: (empty diff detected)

βœ… API diff vs stable

Legacy Xamarin (No breaking changes)
.NET (No breaking changes)
Legacy Xamarin (stable) vs .NET

ℹ️ Generator diff

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

Pipeline on Agent
Hash: dccceb05d22759e819365a10e701aad6fb386f9d [PR build]

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

πŸš€ [CI Build] Test results πŸš€

Test results

βœ… All tests passed on VSTS: simulator tests.

πŸŽ‰ All 173 tests passed πŸŽ‰

Tests counts

βœ… bcl: All 10 tests passed. Html Report (VSDrops) Download
βœ… cecil: All 1 tests passed. Html Report (VSDrops) Download
βœ… dotnettests: All 1 tests passed. Html Report (VSDrops) Download
βœ… fsharp: All 7 tests passed. Html Report (VSDrops) Download
βœ… framework: All 8 tests passed. [attempt 2] Html Report (VSDrops) Download
βœ… generator: All 2 tests passed. Html Report (VSDrops) Download
βœ… interdependent_binding_projects: All 7 tests passed. Html Report (VSDrops) Download
βœ… install_source: All 1 tests passed. Html Report (VSDrops) Download
βœ… introspection: All 8 tests passed. Html Report (VSDrops) Download
βœ… linker: All 65 tests passed. Html Report (VSDrops) Download
βœ… mac_binding_project: All 1 tests passed. Html Report (VSDrops) Download
βœ… mmp: All 2 tests passed. Html Report (VSDrops) Download
βœ… mononative: All 6 tests passed. Html Report (VSDrops) Download
βœ… monotouch: All 38 tests passed. Html Report (VSDrops) Download
βœ… msbuild: All 2 tests passed. Html Report (VSDrops) Download
βœ… mtouch: All 1 tests passed. Html Report (VSDrops) Download
βœ… xammac: All 3 tests passed. Html Report (VSDrops) Download
βœ… xcframework: All 8 tests passed. Html Report (VSDrops) Download
βœ… xtro: All 2 tests passed. Html Report (VSDrops) Download

Pipeline on Agent
Hash: dccceb05d22759e819365a10e701aad6fb386f9d [PR build]

@simonrozsival
simonrozsival dismissed rolfbjarne’s stale review August 28, 2023 08:14

I updated the code, please have another look.

@rolfbjarne
rolfbjarne merged commit 6f9eea2 into dotnet:net8.0 Aug 28, 2023
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.

4 participants