com.google.idea.blaze.base.lang.buildfile.language.semantics.BuiltInNamesProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.google.idea.blaze.base.lang.buildfile.language.semantics.BuiltInNamesProvider.java

Source

/*
 * Copyright 2016 The Bazel Authors. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.idea.blaze.base.lang.buildfile.language.semantics;

import com.google.common.collect.ImmutableSet;
import com.intellij.openapi.project.Project;

/**
 * The built-in names available in the BUILD language. This is not a complete list, and is only
 * intended to be used for syntax highlighting.
 */
public class BuiltInNamesProvider {

    // https://www.bazel.io/versions/master/docs/skylark/lib/globals.html
    public static final ImmutableSet<String> GLOBALS = ImmutableSet.of("Actions", "DATA_CFG", "False", "HOST_CFG",
            "None", "PACKAGE_NAME", "REPOSITORY_NAME", "True", "all", "any", "aspect", "bool", "dict", "dir",
            "enumerate", "fail", "getattr", "hasattr", "hash", "int", "len", "list", "max", "min", "print",
            "provider", "range", "repository_rule", "repr", "reversed", "rule", "select", "set", "sorted", "str",
            "struct", "type", "zip");

    // https://www.bazel.io/versions/master/docs/be/functions.html
    private static final ImmutableSet<String> FUNCTIONS = ImmutableSet.of("load", "package", "pacakge_group",
            "licenses", "exports_files", "glob", "select", "workspace");

    /** Returns all built-in global symbols and function names. */
    public static ImmutableSet<String> getBuiltInNames(Project project) {
        ImmutableSet.Builder<String> builder = ImmutableSet.<String>builder().addAll(GLOBALS).addAll(FUNCTIONS);
        BuildLanguageSpec spec = BuildLanguageSpecProvider.getInstance().getLanguageSpec(project);
        if (spec != null) {
            builder = builder.addAll(spec.getKnownRuleNames());
        }
        return builder.build();
    }

    /** Returns all built-in rules and function names. */
    public static ImmutableSet<String> getBuiltInFunctionNames(Project project) {
        ImmutableSet.Builder<String> builder = ImmutableSet.<String>builder().addAll(FUNCTIONS);
        BuildLanguageSpec spec = BuildLanguageSpecProvider.getInstance().getLanguageSpec(project);
        if (spec != null) {
            builder = builder.addAll(spec.getKnownRuleNames());
        }
        return builder.build();
    }
}