Skip to content

Commit be2acbc

Browse files
authored
[build] Remove use of 'net472' Target Framework (#1099)
Remove use of and support for the `net472` target framework from both the project files and from CI & PR builds. Also removes some accumulated hacks for supporting Mono & .NET Framework that are no longer needed. Add a `Generator_BG8A08` localized error message.
1 parent dbb9edd commit be2acbc

File tree

58 files changed

+106
-401
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+106
-401
lines changed

Directory.Build.props

+2-20
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,12 @@
33
<!-- Note: MUST be imported *after* $(Configuration) is set! -->
44
<PropertyGroup>
55
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6-
<!-- Mono's MSBuild does not support some implicit .NET6 source generator stuff -->
7-
<TreatWarningsAsErrors Condition=" '$(Configuration)' == 'Release' And '$(MSBuildRuntimeType)' != 'Mono' ">true</TreatWarningsAsErrors>
6+
<TreatWarningsAsErrors Condition=" '$(Configuration)' == 'Release' ">true</TreatWarningsAsErrors>
87
<_OutputPath>$(MSBuildThisFileDirectory)bin\Build$(Configuration)\</_OutputPath>
98
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
109
<ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
1110
<DotNetTargetFrameworkVersion>7.0</DotNetTargetFrameworkVersion>
1211
<DotNetTargetFramework>net$(DotNetTargetFrameworkVersion)</DotNetTargetFramework>
13-
<!--
14-
Workaround for https://github.com/NuGet/Home/issues/6461 (VSWin Only)
15-
Even though we don't build NuGet packages, it still attempts to build the NuGet package name, which includes
16-
the assembly version if PackageVersion isn't specified. Because our assemblies have different versions
17-
per-TFM, that causes a problem because the package can't have multiple versions in it.
18-
Set a dummy PackageVersion because we don't actually need it.
19-
-->
20-
<PackageVersion>1.0.0.0</PackageVersion>
2112
</PropertyGroup>
2213

2314
<Import
@@ -76,19 +67,10 @@
7667
</PropertyGroup>
7768

7869
<!--
79-
When building on a bot w/ VS2019:
80-
81-
warning CS8032: An instance of analyzer System.Text.Json.SourceGeneration.JsonSourceGenerator cannot be created from
82-
83-
however, with `$(TreatWarningsAsErrors)`=True, this becomes an error,
84-
meaning we can't build on VS2019.
85-
86-
Ignore CS8032 so that we can build on VS2019.
87-
8870
JniEnvironment.g.cs(34,8): error CS8981: The type name 'jobject' only contains lower-cased ascii characters. Such names may become reserved for the language.
8971
-->
9072
<PropertyGroup>
91-
<NoWarn>$(NoWarn);CS8032;CS8981</NoWarn>
73+
<NoWarn>$(NoWarn);CS8981</NoWarn>
9274
</PropertyGroup>
9375

9476
</Project>

TargetFrameworkDependentValues.props

+11-24
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project>
33

4-
<PropertyGroup Condition=" '$(TargetFramework)' != '' And (!$(TargetFramework.StartsWith('nets')) And !$(TargetFramework.StartsWith('net4')) And !$(TargetFramework.StartsWith('monoandroid'))) ">
4+
<PropertyGroup Condition=" '$(TargetFramework)' != '' And !$(TargetFramework.StartsWith('nets')) ">
55
<JIBuildingForNetCoreApp>True</JIBuildingForNetCoreApp>
66
</PropertyGroup>
77

8-
<PropertyGroup Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">
9-
<IntermediateOutputPath>$(BaseIntermediateOutputPath)\$(Configuration)-$(TargetFramework.ToLowerInvariant())\</IntermediateOutputPath>
10-
<BuildToolOutputFullPath>$(MSBuildThisFileDirectory)bin\Build$(Configuration)-$(TargetFramework.ToLowerInvariant())\</BuildToolOutputFullPath>
11-
<ToolOutputFullPath>$(MSBuildThisFileDirectory)bin\$(Configuration)-$(TargetFramework.ToLowerInvariant())\</ToolOutputFullPath>
12-
<TestOutputFullPath>$(MSBuildThisFileDirectory)bin\Test$(Configuration)-$(TargetFramework.ToLowerInvariant())\</TestOutputFullPath>
8+
<PropertyGroup>
9+
<IntermediateOutputPath>$(BaseIntermediateOutputPath)\$(Configuration)-$(DotNetTargetFramework.ToLowerInvariant())\</IntermediateOutputPath>
10+
<BuildToolOutputFullPathNoTF>$(MSBuildThisFileDirectory)bin\Build$(Configuration)\</BuildToolOutputFullPathNoTF>
11+
<BuildToolOutputFullPath>$(MSBuildThisFileDirectory)bin\Build$(Configuration)-$(DotNetTargetFramework.ToLowerInvariant())\</BuildToolOutputFullPath>
12+
<ToolOutputFullPath>$(MSBuildThisFileDirectory)bin\$(Configuration)-$(DotNetTargetFramework.ToLowerInvariant())\</ToolOutputFullPath>
13+
<TestOutputFullPath>$(MSBuildThisFileDirectory)bin\Test$(Configuration)-$(DotNetTargetFramework.ToLowerInvariant())\</TestOutputFullPath>
1314
<UtilityOutputFullPath Condition=" '$(UtilityOutputFullPathCoreApps)' != '' ">$(UtilityOutputFullPathCoreApps)</UtilityOutputFullPath>
1415
<UtilityOutputFullPath Condition=" '$(UtilityOutputFullPathCoreApps)' == '' ">$(ToolOutputFullPath)</UtilityOutputFullPath>
1516
<_XamarinAndroidCecilPath Condition=" '$(CecilSourceDirectory)' != '' And Exists('$(UtilityOutputFullPathCoreApps)Xamarin.Android.Cecil.dll') ">$(UtilityOutputFullPathCoreApps)Xamarin.Android.Cecil.dll</_XamarinAndroidCecilPath>
@@ -18,32 +19,18 @@
1819
<JICoreLibVersion>$(JINetCoreLibVersion)</JICoreLibVersion>
1920
</PropertyGroup>
2021

21-
<PropertyGroup Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">
22-
<IntermediateOutputPath>$(BaseIntermediateOutputPath)\$(Configuration)</IntermediateOutputPath>
23-
<BuildToolOutputFullPath>$(MSBuildThisFileDirectory)bin\Build$(Configuration)\</BuildToolOutputFullPath>
24-
<ToolOutputFullPath>$(MSBuildThisFileDirectory)bin\$(Configuration)\</ToolOutputFullPath>
25-
<TestOutputFullPath>$(MSBuildThisFileDirectory)bin\Test$(Configuration)\</TestOutputFullPath>
26-
<UtilityOutputFullPath Condition=" '$(UtilityOutputFullPath)' == '' ">$(ToolOutputFullPath)</UtilityOutputFullPath>
27-
<_XamarinAndroidCecilPath Condition=" '$(CecilSourceDirectory)' != '' And Exists('$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll') ">$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll</_XamarinAndroidCecilPath>
28-
<JIUtilityVersion>$(JIOldToolVersion)</JIUtilityVersion>
29-
<JICoreLibVersion>$(JIOldCoreLibVersion)</JICoreLibVersion>
30-
</PropertyGroup>
31-
3222
<PropertyGroup>
3323
<Runtime Condition="'$(OS)' != 'Windows_NT'">mono</Runtime>
34-
<_JNIEnvGenPath Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">$(BuildToolOutputFullPath)jnienv-gen.dll</_JNIEnvGenPath>
35-
<_JNIEnvGenPath Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">$(BuildToolOutputFullPath)jnienv-gen.exe</_JNIEnvGenPath>
36-
<_RunJNIEnvGen Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">$(DotnetToolPath) "$(_JNIEnvGenPath)"</_RunJNIEnvGen>
37-
<_RunJNIEnvGen Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">$(Runtime) "$(_JNIEnvGenPath)"</_RunJNIEnvGen>
24+
<_JNIEnvGenPath>$(BuildToolOutputFullPath)jnienv-gen.dll</_JNIEnvGenPath>
25+
<_RunJNIEnvGen>$(DotnetToolPath) "$(_JNIEnvGenPath)"</_RunJNIEnvGen>
3826
</PropertyGroup>
3927

40-
<!-- The net6.0 versions of these are stricter and require overloads not available in .NET Framework, so start with just .NET Framework -->
41-
<PropertyGroup Condition=" '$(JIBuildingForNetCoreApp)' != 'True' ">
28+
<PropertyGroup>
4229
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
4330
<WarningsAsErrors>$(WarningsAsErrors);CA1307;CA1309;CA1310</WarningsAsErrors>
4431
</PropertyGroup>
4532

46-
<PropertyGroup Condition=" '$(JIBuildingForNetCoreApp)' == 'True' ">
33+
<PropertyGroup>
4734
<NoWarn>$(NoWarn);CA1307;CA1309;CA1310</NoWarn>
4835
</PropertyGroup>
4936

build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj

+1-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,7 @@
88
<Import Project="..\..\TargetFrameworkDependentValues.props" />
99

1010
<PropertyGroup>
11-
<OutputPath>$(BuildToolOutputFullPath)</OutputPath>
12-
</PropertyGroup>
13-
14-
<PropertyGroup>
15-
<OutputPath>$(BuildToolOutputFullPath)</OutputPath>
11+
<OutputPath>$(BuildToolOutputFullPathNoTF)</OutputPath>
1612
<GitDefaultBranch>main</GitDefaultBranch>
1713
<GitThisAssembly>false</GitThisAssembly>
1814
</PropertyGroup>

build-tools/automation/azure-pipelines.yaml

+3-100
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ variables:
2121
RunningOnCI: true
2222
Build.Configuration: Release
2323
MaxJdkVersion: 8
24-
DotNetCoreVersion: 7.0.100-rc.1.22431.12
24+
DotNetCoreVersion: 7.x
2525
DotNetTargetFramework: net7.0
2626
NetCoreTargetFrameworkPathSuffix: -$(DotNetTargetFramework)
2727
1ESWindowsPool: AzurePipelines-EO
@@ -31,56 +31,8 @@ variables:
3131
DisablePipelineConfigDetector: true
3232

3333
jobs:
34-
- job: windows_build
35-
displayName: Windows - .NET Framework
36-
pool:
37-
name: $(1ESWindowsPool)
38-
demands:
39-
- ImageOverride -equals $(1ESWindowsImage)
40-
timeoutInMinutes: 20
41-
workspace:
42-
clean: all
43-
steps:
44-
- checkout: self
45-
submodules: recursive
46-
47-
- template: templates\install-dependencies.yaml
48-
49-
- task: MSBuild@1
50-
displayName: MSBuild Java.Interop.sln /t:Restore
51-
inputs:
52-
solution: Java.Interop.sln
53-
configuration: $(Build.Configuration)
54-
msbuildArguments: /t:Restore /p:RestoreConfigFile=$(System.DefaultWorkingDirectory)\external\xamarin-android-tools\NuGet.config
55-
56-
- task: MSBuild@1
57-
displayName: MSBuild Java.Interop.sln /t:Prepare
58-
inputs:
59-
solution: Java.Interop.sln
60-
configuration: $(Build.Configuration)
61-
msbuildArguments: /restore /t:Prepare
62-
63-
- task: MSBuild@1
64-
displayName: MSBuild Java.Interop.sln
65-
inputs:
66-
solution: Java.Interop.sln
67-
configuration: $(Build.Configuration)
68-
msbuildArguments: /restore
69-
70-
- task: MSBuild@1
71-
displayName: MSBuild RunNUnitTests.targets
72-
inputs:
73-
solution: build-tools/scripts/RunNUnitTests.targets
74-
configuration: $(Build.Configuration)
75-
msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\generator-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\logcat-parse-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.JavaTypeSystem-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.Generator-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.SourceWriter-Tests.dll"
76-
condition: succeededOrFailed()
77-
78-
- template: templates\publish-test-results.yaml
79-
parameters:
80-
platformName: .NET Framework - Windows
81-
8234
- job: windows_dotnet_build
83-
displayName: Windows - .NET Core
35+
displayName: Windows - .NET
8436
pool:
8537
name: $(1ESWindowsPool)
8638
demands:
@@ -121,57 +73,8 @@ jobs:
12173
ArtifactName: debug
12274
condition: succeededOrFailed()
12375

124-
- job: mac_build
125-
displayName: Mac - Mono
126-
pool:
127-
name: $(1ESMacPool)
128-
vmImage: $(1ESMacImage)
129-
timeoutInMinutes: 20
130-
workspace:
131-
clean: all
132-
steps:
133-
- checkout: self
134-
submodules: recursive
135-
136-
- template: templates\install-dependencies.yaml
137-
138-
- script: >
139-
dotnet tool install --global boots &&
140-
boots https://download.mono-project.com/archive/6.12.0/macos-10-universal/MonoFramework-MDK-6.12.0.145.macos10.xamarin.universal.pkg
141-
displayName: Install Mono
142-
143-
- template: templates\core-build.yaml
144-
145-
- script: |
146-
r=0
147-
make run-all-tests CONFIGURATION=$(Build.Configuration) JI_MAX_JDK=$(MaxJdkVersion) || r=$?
148-
jar cf xatb.jar -C tests/Xamarin.Android.Tools.Bytecode-Tests/obj/*/classes .
149-
zip -r bin.zip bin
150-
exit $r
151-
displayName: Run Tests
152-
153-
- template: templates\publish-test-results.yaml
154-
parameters:
155-
platformName: Mono - Mac
156-
157-
- task: CopyFiles@2
158-
displayName: 'Copy Files to: Artifact Staging Directory'
159-
inputs:
160-
SourceFolder: $(System.DefaultWorkingDirectory)
161-
Contents: |
162-
xatb.jar
163-
bin.zip
164-
TargetFolder: $(Build.ArtifactStagingDirectory)
165-
condition: succeededOrFailed()
166-
167-
- task: PublishBuildArtifacts@1
168-
displayName: 'Publish Artifact: debug'
169-
inputs:
170-
ArtifactName: debug
171-
condition: succeededOrFailed()
172-
17376
- job: mac_dotnet_build
174-
displayName: Mac - .NET Core
77+
displayName: Mac - .NET
17578
pool:
17679
name: $(1ESMacPool)
17780
vmImage: $(1ESMacImage)

build-tools/automation/templates/core-tests.yaml

-20
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,6 @@ steps:
7676
arguments: bin/Test$(Build.Configuration)$(NetCoreTargetFrameworkPathSuffix)/Xamarin.SourceWriter-Tests.dll
7777
continueOnError: true
7878

79-
- task: DotNetCoreCLI@2
80-
displayName: 'Tests: Java.Interop'
81-
condition: eq('${{ parameters.runNativeTests }}', 'true')
82-
inputs:
83-
command: test
84-
testRunTitle: Java.Interop (netstandard2.0 - ${{ parameters.platformName }})
85-
arguments: bin/Test$(Build.Configuration)/Java.Interop-Tests.dll
86-
continueOnError: true
87-
retryCountOnTaskFailure: 1
88-
8979
- task: DotNetCoreCLI@2
9080
displayName: 'Tests: Java.Interop'
9181
condition: or(eq('${{ parameters.runNativeDotnetTests }}', 'true'), eq('${{ parameters.runNativeTests }}', 'true'))
@@ -136,16 +126,6 @@ steps:
136126
continueOnError: true
137127
retryCountOnTaskFailure: 1
138128

139-
- task: DotNetCoreCLI@2
140-
displayName: 'Tests: Java.Interop-Performance-net472'
141-
condition: eq('${{ parameters.runNativeTests }}', 'true')
142-
inputs:
143-
command: test
144-
testRunTitle: Java.Interop-Performance (net472 - ${{ parameters.platformName }})
145-
arguments: bin/Test$(Build.Configuration)/Java.Interop-PerformanceTests.dll
146-
continueOnError: true
147-
retryCountOnTaskFailure: 1
148-
149129
- task: DotNetCoreCLI@2
150130
displayName: 'Tests: Java.Interop-Performance-$(DotNetTargetFramework)'
151131
condition: eq('${{ parameters.runNativeTests }}', 'true')

build-tools/automation/templates/install-dependencies.yaml

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ parameters:
33

44
steps:
55
- task: UseDotNet@2
6-
displayName: Use .NET Core $(DotNetCoreVersion)
6+
displayName: Use .NET $(DotNetCoreVersion)
77
inputs:
88
version: $(DotNetCoreVersion)
9-
includePreviewVersions: true

build-tools/jnienv-gen/jnienv-gen.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFrameworks>net472;$(DotNetTargetFramework)</TargetFrameworks>
5+
<TargetFramework>$(DotNetTargetFramework)</TargetFramework>
66
<IsPackable>false</IsPackable>
77
</PropertyGroup>
88

src/Java.Interop.Dynamic/Java.Interop.Dynamic.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
4-
<TargetFramework>netstandard2.0</TargetFramework>
4+
<TargetFramework>$(DotNetTargetFramework)</TargetFramework>
55
<LangVersion>8.0</LangVersion>
66
<ProjectGuid>{AD4468F8-8883-434B-9D4C-E1801BB3B52A}</ProjectGuid>
7-
<Nullable>enable</Nullable>
7+
<Nullable>annotations</Nullable>
88
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
99
<SignAssembly>true</SignAssembly>
1010
<AssemblyOriginatorKeyFile>..\..\product.snk</AssemblyOriginatorKeyFile>

src/Java.Interop.Export/Java.Interop.Export.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
4-
<TargetFrameworks>netstandard2.0;$(DotNetTargetFramework)</TargetFrameworks>
4+
<TargetFramework>$(DotNetTargetFramework)</TargetFramework>
55
<LangVersion>9.0</LangVersion>
66
<ProjectGuid>{B501D075-6183-4E1D-92C9-F7B5002475B1}</ProjectGuid>
77
<Nullable>enable</Nullable>

src/Java.Interop.GenericMarshaler/Java.Interop.GenericMarshaler.csproj

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
4-
<TargetFramework>netstandard2.0</TargetFramework>
4+
<TargetFramework>$(DotNetTargetFramework)</TargetFramework>
55
<ProjectGuid>{D1243BAB-23CA-4566-A2A3-3ADA2C2DC3AF}</ProjectGuid>
66
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
77
<SignAssembly>true</SignAssembly>
@@ -20,12 +20,7 @@
2020
</None>
2121
</ItemGroup>
2222
<ItemGroup>
23-
<ProjectReference Include="..\Java.Interop\Java.Interop.csproj">
24-
<Project>{94BD81F7-B06F-4295-9636-F8A3B6BDC762}</Project>
25-
<Name>Java.Interop</Name>
26-
<SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
27-
<AdditionalProperties>TargetFramework=netstandard2.0</AdditionalProperties>
28-
</ProjectReference>
23+
<ProjectReference Include="..\Java.Interop\Java.Interop.csproj" />
2924
</ItemGroup>
3025
<ItemGroup>
3126
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />

src/Java.Interop.Localization/Resources.Designer.cs

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Java.Interop.Localization/Resources.resx

+5
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,11 @@ The following terms should not be translated: Metadata.xml.</comment>
294294
<value>Invalid namespace transform '{0}'</value>
295295
<comment>{0} - XML transform. (example: '&lt;ns-replace source="example" replacement="Example" /&gt;')</comment>
296296
</data>
297+
<data name="Generator_BG8A08" xml:space="preserve">
298+
<value>Metadata.xml element '{0}' is missing the 'path' attribute.</value>
299+
<comment>{0} - XML transform. (example: '&lt;remove-node path="/api/package[@name='javax.sql']"')
300+
The following terms should not be translated: Metadata.xml, path.</comment>
301+
</data>
297302
<data name="Generator_BG8B00" xml:space="preserve">
298303
<value>Unknown generic argument constraint type '{0}' for member '{1}'.</value>
299304
<comment>{0} - .NET type name

src/Java.Interop.Tools.Generator/Enumification/ConstantEntry.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -148,18 +148,18 @@ public static ConstantEntry FromElement (XElement elem)
148148
var entry = new ConstantEntry {
149149
Action = ConstantAction.None,
150150
ApiLevel = NamingConverter.ParseApiLevel (elem),
151-
JavaSignature = elem.Parent.Parent.Attribute ("name").Value,
151+
JavaSignature = elem.Parent?.Parent?.Attribute ("name")?.Value,
152152
Value = elem.Attribute ("value")?.Value,
153153
};
154154

155-
var java_package = elem.Parent.Parent.Attribute ("name").Value.Replace ('.', '/');
156-
var java_type = elem.Parent.Attribute ("name").Value.Replace ('.', '$');
157-
var java_member = elem.Attribute ("name").Value;
155+
var java_package = elem.Parent?.Parent?.Attribute ("name")?.Value.Replace ('.', '/');
156+
var java_type = elem.Parent?.Attribute ("name")?.Value.Replace ('.', '$');
157+
var java_member = elem.Attribute ("name")?.Value;
158158

159159
entry.JavaSignature = $"{java_package}/{java_type}.{java_member}".TrimStart ('/');
160160

161161
// Interfaces get an "I:" prefix
162-
if (elem.Parent.Name.LocalName == "interface")
162+
if (elem.Parent?.Name.LocalName == "interface")
163163
entry.JavaSignature = "I:" + entry.JavaSignature;
164164

165165
return entry;

0 commit comments

Comments
 (0)