You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
1.9 KiB

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package codetoanalyze.java.infer;
import java.util.*;
class Lists {
void emptyRemembersOk(List l) {
boolean empty = l.isEmpty();
Object o = null;
if (empty != l.isEmpty()) {
o.toString();
}
}
void FN_latent_removeInvalidatesNonEmptinessNPEBad(List l) {
l.removeAll(l);
Object o = null;
if (l.isEmpty()) {
o.toString();
}
}
void clearCausesEmptinessNPEBad(List l) {
l.clear();
Object o = null;
if (l.isEmpty()) {
o.toString();
}
}
// it would be too noisy to report here
void plainGetOk(List l, int i) {
l.get(i).toString();
}
Object getElement(List l) {
return l.isEmpty() ? null : l.get(0);
}
void getElementOk(List l) {
if (l.isEmpty()) {
return;
}
getElement(l).toString();
}
void getElementNPEBad() {
List l = new ArrayList();
if (!l.isEmpty()) {
return;
}
getElement(l).toString();
}
void getElementOk() {
List l = new ArrayList();
if (!l.isEmpty()) {
Object o = null;
o.toString();
}
}
void addInvalidatesEmptinessNPEBad(List l) {
l.add(0, new Object());
Object o = null;
if (!l.isEmpty()) {
o.toString();
}
}
void addAndRemoveEmptinessNPEBad() {
List l = new ArrayList();
Integer i = new Integer(1);
l.add(i);
l.remove(i);
if (l.isEmpty()) {
getElement(l).toString();
}
}
void FP_removeOnEmptyListOk() {
List l = new LinkedList();
Object removed = l.remove(0);
if (removed != null) {
getElement(l).toString();
}
}
void removeElementBad() {
List l = new LinkedList();
Integer i = new Integer(4);
l.add(i);
boolean removed = l.remove(i);
if (removed) {
Object o = null;
o.toString();
}
}
}