| // Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package com.android.tools.r8.retrace; |
| |
| import com.android.tools.r8.TestBase; |
| import com.android.tools.r8.TestDiagnosticMessagesImpl; |
| import com.android.tools.r8.TestParameters; |
| import com.android.tools.r8.TestParametersCollection; |
| import com.android.tools.r8.utils.StringUtils; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.Parameterized; |
| |
| @RunWith(Parameterized.class) |
| public class InvalidMappingRangesB309080420Test extends TestBase { |
| |
| @Parameterized.Parameters(name = "{0}") |
| public static TestParametersCollection data() { |
| return getTestParameters().withNoneRuntime().build(); |
| } |
| |
| public InvalidMappingRangesB309080420Test(TestParameters parameters) { |
| parameters.assertNoneRuntime(); |
| } |
| |
| private static String MAPPING = |
| StringUtils.unixLines( |
| "a.q -> a.q:", |
| " 1:1:void a(com.example.Foo) -> a", |
| " 2:0:void a() -> a", // Unexpected line range [2:0] - interpreting as [2:2] |
| " 12:21:void a(android.content.Intent) -> a", |
| "a.x -> a.x:", |
| " 1:1:void a(com.example.Foo) -> a", |
| " 11:2:void a() -> a", // Unexpected line range [11:2] - interpreting as [2:11] |
| " 12:21:void a(android.content.Intent) -> a", |
| // Allow identifier content to follow <init>/<clinit>. |
| " 22:41:void <clinit>$more$stuff() -> clinit$move$stuff", |
| // Allow type identifiers to start with '.' |
| ".Foo -> o.bar:"); |
| |
| @Test |
| public void test() throws Exception { |
| TestDiagnosticMessagesImpl handler = new TestDiagnosticMessagesImpl(); |
| ProguardMappingSupplier.builder() |
| .setProguardMapProducer(ProguardMapProducer.fromString(MAPPING)) |
| .setLoadAllDefinitions(true) |
| .build() |
| .createRetracer(handler); |
| handler.assertNoMessages(); |
| } |
| } |