| commit | b3fc84dbb76b4111a43a9ad36b6129554bf2426f | [log] [tgz] |
|---|---|---|
| author | adonovan <adonovan@google.com> | Wed Apr 29 10:18:30 2020 -0700 |
| committer | Copybara-Service <copybara-worker@google.com> | Wed Apr 29 10:19:26 2020 -0700 |
| tree | 4ebc0760e77dd446ebdf4e6c1fe75ebad026d868 | |
| parent | 9ec48cf41b0bdea315db5cdacd8d34a2a6b15e51 [diff] |
bazel syntax: don't reorder regular parameters Prior to this change, function parameters were reordered in resolveFunction so that required keyword-only parameters precede optional ones, as the source permits them to be mixed. This change keeps all parameters (except *args) in source order, and instead uses a sentinel value, MANDATORY, in the StarlarkFunction.defaultValues tuple, to indicate the positions of mandatory parameters, slightly simplifying the algorithms for argument processing. Importantly, parameter Identifiers are now bound in run-time order, which sets us up for using the function's binding array as the list of parameter names. All of this is a step to convergence with the go.starlark.net resolver. Also: - issue more specific errors during parameter validation, and remove partial validation from parser. - rename Resolver.addError -> errorf and use String.format - rename Resolver.declare -> bind - add missing tests of parameter validation. PiperOrigin-RevId: 309046975
{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.
Follow our tutorials:
See CONTRIBUTING.md