Skip to content

Commit fd71439

Browse files
Fix UsesLibrary 2-arg ctor losing Required flag
UsesLibraryAttribute(string, bool) puts Required in FixedArguments[1]. ParseNameAndProperties now stores additional bool ctor args in props so CreateUsesLibraryInfo can read them. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 05818f8 commit fd71439

4 files changed

Lines changed: 18 additions & 1 deletion

File tree

external/Java.Interop

src/Microsoft.Android.Sdk.TrimmableTypeMap/Scanner/AssemblyIndex.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,12 @@ internal void ScanAssemblyAttributes (AssemblyManifestInfo info)
406406
if (value.FixedArguments.Length > 0 && value.FixedArguments [0].Value is string ctorName) {
407407
name = ctorName;
408408
}
409+
// Handle 2-arg ctors like UsesLibrary(string, bool) — store extra ctor args in props
410+
for (int i = 1; i < value.FixedArguments.Length; i++) {
411+
if (value.FixedArguments [i].Value is bool boolVal) {
412+
props ["Required"] = boolVal;
413+
}
414+
}
409415
foreach (var named in value.NamedArguments) {
410416
if (named.Name == "Name" && named.Value is string n) {
411417
name = n;

tests/Microsoft.Android.Sdk.TrimmableTypeMap.Tests/Scanner/AssemblyAttributeScanningTests.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ public void UsesLibrary_ConstructorArg ()
4646
var info = ScanAssemblyManifestInfo ();
4747
var lib = info.UsesLibraries.FirstOrDefault (l => l.Name == "org.apache.http.legacy");
4848
Assert.NotNull (lib);
49+
Assert.True (lib.Required);
50+
}
51+
52+
[Fact]
53+
public void UsesLibrary_TwoArgConstructor ()
54+
{
55+
var info = ScanAssemblyManifestInfo ();
56+
var lib = info.UsesLibraries.FirstOrDefault (l => l.Name == "com.example.optional");
57+
Assert.NotNull (lib);
58+
Assert.False (lib.Required);
4959
}
5060

5161
[Fact]

tests/Microsoft.Android.Sdk.TrimmableTypeMap.Tests/TestFixtures/AssemblyAttributes.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
[assembly: UsesFeature (GLESVersion = 0x00020000)]
66
[assembly: UsesPermission ("android.permission.INTERNET")]
77
[assembly: UsesLibrary ("org.apache.http.legacy")]
8+
[assembly: UsesLibrary ("com.example.optional", false)]
89
[assembly: MetaData ("com.example.key", Value = "test-value")]

0 commit comments

Comments
 (0)