From 7b233c4604dc08ca4ca90eab59083a472f97a502 Mon Sep 17 00:00:00 2001 From: fzaiser Date: Wed, 16 Aug 2017 12:01:14 +0200 Subject: Remove methods that shouldn't belong to FuncallExpr RELNOTES: None PiperOrigin-RevId: 165419360 --- .../skylark/SkylarkRepositoryModule.java | 15 ++++++++++-- .../build/lib/syntax/FuncallExpression.java | 27 ---------------------- 2 files changed, 13 insertions(+), 29 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java index 9d123ca6a3..b8aea7c1ef 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java @@ -35,14 +35,16 @@ import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature; import com.google.devtools.build.lib.syntax.BaseFunction; import com.google.devtools.build.lib.syntax.BuiltinFunction; +import com.google.devtools.build.lib.syntax.DotExpression; import com.google.devtools.build.lib.syntax.EvalException; +import com.google.devtools.build.lib.syntax.Expression; import com.google.devtools.build.lib.syntax.FuncallExpression; import com.google.devtools.build.lib.syntax.FunctionSignature; +import com.google.devtools.build.lib.syntax.Identifier; import com.google.devtools.build.lib.syntax.Runtime; import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor; -import com.google.devtools.build.lib.util.Preconditions; import java.util.Map; /** @@ -156,7 +158,16 @@ public class SkylarkRepositoryModule { public Object call( Object[] args, FuncallExpression ast, com.google.devtools.build.lib.syntax.Environment env) throws EvalException, InterruptedException { - String ruleClassName = Preconditions.checkNotNull(ast.getFunctionNameIfPossible()); + String ruleClassName = null; + Expression function = ast.getFunction(); + if (function instanceof Identifier) { + ruleClassName = ((Identifier) function).getName(); + } else if (function instanceof DotExpression) { + ruleClassName = ((DotExpression) function).getField().getName(); + } else { + // TODO: Remove the wrong assumption that a "function name" always exists and is relevant + throw new IllegalStateException("Function is not an identifier or method call"); + } try { RuleClass ruleClass = builder.build(ruleClassName); PackageContext context = PackageFactory.getContext(env, ast); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java index 0eb87da305..55ae49d49b 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java @@ -203,33 +203,6 @@ public final class FuncallExpression extends Expression { return this.function; } - /** - * Returns the name of the called function if it's available in the AST. - * - *

It may not be available in cases like `list[0](arg1, arg2)`. - */ - @Nullable - public String getFunctionNameIfPossible() { - Identifier ident = getFunctionIdentifierIfPossible(); - return ident == null ? null : ident.getName(); - } - - /** - * Returns the identifier of the called function if it's available in the AST. - * - *

It may not be available in cases like `list[0](arg1, arg2)`. - */ - @Nullable - public Identifier getFunctionIdentifierIfPossible() { - if (function instanceof Identifier) { - return (Identifier) function; - } - if (function instanceof DotExpression) { - return ((DotExpression) function).getField(); - } - return null; - } - /** * Returns the number of positional arguments. */ -- cgit v1.2.3