bazel syntax: define Starlark.call and use it everywhere

All calls of Starlark callable values go through this function,
whether from the interpreter or Java code. A follow-up change
will make it responsible for doing the push/pop of the call stack.

Also, rename StarlarkCallable.call to callImpl, since no-one should use
it directly. (And reorder its parameters.)

Also, remove sole external call to BaseFunction.callWithArgArray,
and inline it into sole remaining internal caller.

MethodDescriptor.callField now handles the two places that call
a @SkylarkCallable(structField)-annotated Java method.
Previously they were inconsistent in which "extra parameters" they
permitted. Now they allow Location and StarlarkSemantics,
but not StarlarkThread or FuncallExpression.
The annotation processor rejects useStarlarkThreadfor a structField.
(One instance was downgraded to useStarlarkSemantics.)

This is a breaking API change for copybara.

PiperOrigin-RevId: 285031076
26 files changed
tree: c2e1ea00fd01e038ca166dc4f107988da4770066
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .bazelrc
  9. .gitattributes
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CHANGELOG.md
  14. CODEOWNERS
  15. combine_distfiles.py
  16. combine_distfiles_to_tar.sh
  17. compile.sh
  18. CONTRIBUTING.md
  19. CONTRIBUTORS
  20. distdir.bzl
  21. ISSUE_TEMPLATE.md
  22. LICENSE
  23. README.md
  24. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status