All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.shapesecurity.bandolier.es2017.transformations.VariableReferenceExtractor Maven / Gradle / Ivy

There is a newer version: 3.5.1
Show newest version
package com.shapesecurity.bandolier.es2017.transformations;

import com.shapesecurity.functional.data.ImmutableList;
import com.shapesecurity.functional.data.ImmutableSet;
import com.shapesecurity.shift.es2017.scope.Scope;
import com.shapesecurity.shift.es2017.scope.Variable;

import javax.annotation.Nonnull;

// determines all referenced variable names for a module,
public class VariableReferenceExtractor {

	private VariableReferenceExtractor() {

	}

	public static ImmutableSet extractAllReferencedVariableNames(@Nonnull Scope globalScope) {
		return ImmutableList.from(globalScope.variables().toArray(new Variable[0])).map(variable -> variable.name).uniqByEquality()
			.union(globalScope.children.flatMap(scope -> extractAllReferencedVariableNames(scope).toList()).uniqByEquality());
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy