/******************************************************************************* * Copyright (c) 2005, 2016 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * *******************************************************************************/ package org.eclipse.dltk.ruby.typeinference; import java.util.ArrayList; import java.util.HashSet; import org.eclipse.dltk.core.IModelElement; class UniqueNamesList<T> extends ArrayList<T> { private static final long serialVersionUID = 4866432224140371654L; HashSet<String> names = new HashSet<String> (); @Override public boolean add(T elem) { if (elem instanceof IModelElement) { IModelElement modelElement = (IModelElement) elem; if (names.contains(modelElement.getElementName())) return false; names.add(modelElement.getElementName()); } return super.add(elem); } @Override public void clear() { super.clear(); names.clear(); } @Override public boolean contains(Object elem) { if (elem instanceof IModelElement) { IModelElement modelElement = (IModelElement) elem; return names.contains(modelElement.getElementName()); } return super.contains(elem); } }