/*******************************************************************************
 * Copyright (c) 2012 NumberFour AG
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     NumberFour AG - initial API and Implementation (Alex Panchenko)
 *******************************************************************************/
package org.eclipse.dltk.javascript.internal.core;

import java.util.Map;

import org.eclipse.dltk.ast.ASTNode;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.internal.javascript.ti.TypeInferencer2;
import org.eclipse.dltk.javascript.ast.Script;
import org.eclipse.dltk.javascript.core.JSBindings;
import org.eclipse.dltk.javascript.typeinference.IValueReference;
import org.eclipse.dltk.javascript.typeinfo.ITypeSystem;

public class TemporaryBindings extends JSBindings {
	public TemporaryBindings(ITypeSystem typeSystem,
			Map<ASTNode, IValueReference> nodeMap) {
		super(typeSystem, nodeMap);
	}

	@Override
	protected boolean isCacheable() {
		return false;
	}

	public static JSBindings build(TypeInferencer2 inferencer,
			ISourceModule module, Script script) {
		final CollectingVisitor collector = new CollectingVisitor(inferencer);
		inferencer.setModelElement(module);
		inferencer.setVisitor(collector);
		inferencer.doInferencing(script);
		return new TemporaryBindings(inferencer, collector.bindings);
	}
}
