blob: a3fd5371d3c06e6d609795f515ab7a6fe140f1a9 [file] [log] [blame]
// Copyright (c) 2016, 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.
// This code is not run directly. It needs to be compiled to dex code.
// 'throwing.dex' is what is run.
package throwing;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* This class' logic is completely bogus. The only purpose is to be recursive to avoid inlining
* and terminate.
*/
public class RenamedClass {
public List list = new ArrayList();
public List getList() {
if (list == null) { // always false
setList(getList());
}
return list;
}
public void setList(List list) {
if (list == null) {
setList(new LinkedList());
} else {
this.list = list;
}
}
// Another method with the same signature as getList
public void swap(List list) {
List before = getList();
setList(list);
if (before == null) { // always false
swap(list);
}
}
static RenamedClass create() {
RenamedClass theClass = new RenamedClass();
theClass.setList(new LinkedList());
return theClass;
}
void takeThingsForASpin(int value) {
if (value == 42) {
swap(new LinkedList<>());
setList(getList());
} else {
takeThingsForASpin(42);
}
}
}