001package daikon.chicory; 002 003import java.util.AbstractList; 004import java.util.List; 005import org.checkerframework.checker.lock.qual.GuardSatisfied; 006import org.checkerframework.dataflow.qual.Pure; 007import org.checkerframework.dataflow.qual.SideEffectFree; 008 009/** 010 * NonsensicalList is similar to NonsensicalObject but it is used for arrays whose value is 011 * nonsensical. 012 */ 013// It's problematic to make this generic: what would "get" return? 014public class NonsensicalList extends AbstractList<Object> implements List<Object> { 015 016 private NonsensicalList() { 017 super(); 018 } 019 020 public static NonsensicalList getInstance() { 021 return theList; 022 } 023 024 @Pure 025 @Override 026 public Object get(@GuardSatisfied NonsensicalList this, int index) { 027 return NonsensicalObject.getInstance(); 028 } 029 030 @Pure 031 @Override 032 public int size(@GuardSatisfied NonsensicalList this) { 033 return 0; 034 } 035 036 @SideEffectFree 037 @Override 038 public String toString(@GuardSatisfied NonsensicalList this) { 039 return "NonsensicalList"; 040 } 041 042 public static boolean isNonsensicalList(Object obj) { 043 return (obj instanceof NonsensicalList); 044 } 045 046 private static final NonsensicalList theList = new NonsensicalList(); 047}