blob: b89907733958553df1899b0295898e6fa90ddf9b [file] [log] [blame]
// 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.stacktraces;
import com.android.tools.r8.utils.StringUtils;
import java.util.Arrays;
import java.util.List;
/**
* Manually throwing an NPE has a different syntax than it happening where there is no message
* afterwards.
*/
public class InlineRemoveFrameJava17StackTrace implements StackTraceForTest {
@Override
public List<String> obfuscatedStackTrace() {
return Arrays.asList(
"java.lang.NullPointerException", "\tat A.a(SourceFile:1)", "\tat A.main(SourceFile:1)");
}
@Override
public String mapping() {
return StringUtils.joinLines(
"# {'id':'com.android.tools.r8.mapping','version':'2.2'}",
"foo.Class -> A:",
" 1:5:void inlinable():90:90 -> a",
" 1:5:void caller():97 -> a",
" # {'id':'com.android.tools.r8.rewriteFrame',"
+ "'conditions':['throws(Ljava/lang/NullPointerException;)'],"
+ "'actions':['removeInnerFrames(1)']}",
" 1:5:void outerCaller():107 -> a",
" 1:1:void main():111:111 -> main");
}
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
"java.lang.NullPointerException",
"\tat foo.Class.caller(Class.java:97)",
"\tat foo.Class.outerCaller(Class.java:107)",
"\tat foo.Class.main(Class.java:111)");
}
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
"java.lang.NullPointerException",
"\tat foo.Class.void caller()(Class.java:97)",
"\tat foo.Class.void outerCaller()(Class.java:107)",
"\tat foo.Class.void main()(Class.java:111)");
}
@Override
public int expectedWarnings() {
return 0;
}
}