diff options
author | Vitek Karas <10670590+vitek-karas@users.noreply.github.com> | 2022-04-06 23:04:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-06 23:04:42 +0300 |
commit | e8b0ba08dcee4350cc76c8cd160140b0684020af (patch) | |
tree | 615d3bcf551029ab74d3bde34943acfa78d6eea5 /test/Mono.Linker.Tests.Cases/UnreachableBlock/ComplexConditions.cs | |
parent | d12919c43c8af7034e24069b3075f181d3473f80 (diff) |
Share GetConstructor intrinsic a lot of small fixes (#2725)
The main change is sharing of the GetConstructor intrinsic and related tests.
To make those tests work this also implements Type.EmptyTypes and String.Empty and Array.Empty intrinsics.
These are all treated as special cases:
* Type.EmptyTypes and String.Empty are actually field accesses, so we don't have infra to share these yet, no need to add one for now
* Array.Empty is a generic method where we need to know the generic instantiation. The current sharing doesn't propagate this information
so this forced the implementation to NOT be shared but instead done as a fallback which the shared one doesn't handle.
The rest of the changes are all about fixing how the shared intrinsic handling propagates return value from intrinsics.
Lot of small subtle bugs around null or emtpy inputs and forgetting to add return value and so on. The main changes are in GetMethod and GetNestedType intrinsics which had lot of issues.
Added tests for all of the corner cases.
NestedTypesUsedViaReflection test has been reworked as previously it didn't work correctly. Lot of the [Kept] attributes were fulfilled by some of the negative tests and thus the positive tests didn't have coverage (for example calling GetNestedType(unknownName) will mark all nested types on the type, so a subsequent call to GetNestedType("knownname") will not have an observable effect).
Diffstat (limited to 'test/Mono.Linker.Tests.Cases/UnreachableBlock/ComplexConditions.cs')
0 files changed, 0 insertions, 0 deletions