diff options
author | 2015-10-19 23:32:04 +0000 | |
---|---|---|
committer | 2015-10-20 16:37:32 +0000 | |
commit | f6f7a87c8c1734c3a1d8892d3416dfebb2ace7d7 (patch) | |
tree | 9048227f33411d486a737a02baf97e90d189b077 /src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java | |
parent | f00b40d088cd8eb3c12250205592cd1f92959646 (diff) |
Rollback of commit ac7195025b073948785db8c6975a53fc305c5087.
*** Reason for rollback ***
Uses tests that don't run on Bazel
*** Original change description ***
Implement aspect(...) Skylark function.
--
MOS_MIGRATED_REVID=105808850
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java b/src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java deleted file mode 100644 index d4746c4659..0000000000 --- a/src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2014 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.devtools.build.lib.analysis; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableCollection; -import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * A helper class for transitive infos provided by Skylark rule implementations. - */ -@Immutable -public final class SkylarkProviders implements TransitiveInfoProvider { - private final ImmutableMap<String, Object> skylarkProviders; - - SkylarkProviders(ImmutableMap<String, Object> skylarkProviders) { - Preconditions.checkNotNull(skylarkProviders); - this.skylarkProviders = skylarkProviders; - } - - /** - * Returns the keys for the Skylark providers. - */ - public ImmutableCollection<String> getKeys() { - return skylarkProviders.keySet(); - } - - /** - * Returns a Skylark provider; "key" must be one from {@link #getKeys()}. - */ - public Object getValue(String key) { - return skylarkProviders.get(key); - } - - /** - * Merges skylark providers. The set of providers must be disjoint. - * - * @param providers providers to merge {@code this} with. - */ - - public static SkylarkProviders merge(List<SkylarkProviders> providers) { - if (providers.size() == 0) { - return null; - } - if (providers.size() == 1) { - return providers.get(0); - } - - ImmutableMap.Builder<String, Object> resultBuilder = new ImmutableMap.Builder<>(); - Set<String> seenKeys = new HashSet<>(); - for (SkylarkProviders provider : providers) { - for (String key : provider.skylarkProviders.keySet()) { - if (!seenKeys.add(key)) { - // TODO(dslomov): add better diagnostics. - throw new IllegalStateException("Skylark provider " + key + " provided twice"); - } - - resultBuilder.put(key, provider.getValue(key)); - } - } - return new SkylarkProviders(resultBuilder.build()); - } -} |