aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
Commit message (Collapse)AuthorAge
* ReformatingGravatar laurentlb2018-06-11
| | | | | | | | Switch statements were poorly formatted. Fixing it in a separate commit so that it doesn't clutter the diff. RELNOTES: None. PiperOrigin-RevId: 200062930
* Add AutoProfiler-like API to ProfilerGravatar ulfjack2018-06-11
| | | | | | - migrate all startTask/completeTask pairs to the new API PiperOrigin-RevId: 200038703
* Use Identifiers instead of StringsGravatar Taras Tsugrii2018-06-08
| | | | | | | | | | | | The high level summary of the changes: - use `Identifier` instead of `name` in `Keyword` and `Parameter`. - construct `Identifier` through a factory method in case future interning is desired. These changes are in preparation for using `Identifier` instead of `name` for environment lookups. Closes #5304. PiperOrigin-RevId: 199869171
* Add the skylark debugging options to the recognized 'build' options.Gravatar brendandouglas2018-06-08
| | | | | | | | | | Ensure debugging is turned off (and the server socket closed) when the command finishes, even if the blaze server is shut down. Finally, unpause all threads as part of shutting down the debug server, and also shut down the server if the client connection is lost. PiperOrigin-RevId: 199863623
* Update documentation about dict iteration orderGravatar laurentlb2018-06-08
| | | | | | | | | | | The information was redundant. https://github.com/bazelbuild/bazel/commit/d605a62eb9908fe44c89a2ed10f88f633c4dcb3e modified only one place, which created a contradiction. We can just remove the outdated one. #5352 RELNOTES: None. PiperOrigin-RevId: 199780557
* Add an initial skylark debug server implementation.Gravatar Googler2018-06-07
| | | | | | | | | | | | Not intending this to be a complete implementation yet. Among the things still to do: - officially add support for debugging aspects, rules, etc., with corresponding tests. - handle breakpoints at return statements (an edge case which bypasses Eval). PiperOrigin-RevId: 199692670
* Fix a few generated docs.Gravatar Sam Rawlins2018-06-07
| | | | | | | | | | | | | | In particular, * fix sentences with no space after the period, like [here]([] * switch backticks to `<code>`, like [here]([] * link `ctx.var` [here]([] * Add periods to the end of paragraphs, like [here]([] * Format a list [here]([] Closes #5337. PiperOrigin-RevId: 199631585
* Add flag --experimental_enable_repo_mapping to gate usage of repo_mapping ↵Gravatar dannark2018-06-05
| | | | | | | functionality in WORKSPACE rules. RELNOTES: None PiperOrigin-RevId: 199332092
* Stop allocating new tokens in the lexerGravatar laurentlb2018-06-05
| | | | | | | | | | There's only one Token and it gets reused. This reduces the memory usage of the lexer. Parsing time seems to be 5%-10% faster with this change on a large file. This makes little difference on the overall performance of Bazel though. RELNOTES: None. PiperOrigin-RevId: 199310860
* Get rid of the tokens queue in the lexerGravatar laurentlb2018-06-04
| | | | | | | Next step will be to skip token allocation. RELNOTES: None. PiperOrigin-RevId: 199121625
* Make tools in action inputs an error.Gravatar tomlu2018-06-02
| | | | | | | | | | Supporting tools in inputs introduces a slow linear scan. Such tools should be moved to the 'tools' attribute. If --incompatible_no_support_tools_in_action_inputs is set the inputs are scanned, but a helpful error message is issued to the user. Eventually we will remove the slow scanning. Errors will surface in the execution phase instead of during analysis, and the resulting error messages will be less obvious. RELNOTES: None RELNOTES[INC]: With --incompatible_no_support_tools_in_action_inputs enabled, Skylark action inputs are no longer scanned for tools. Move any such inputs to the newly introduced 'tools' attribute. PiperOrigin-RevId: 198996093
* Mention string comparison in the documentationGravatar laurentlb2018-06-01
| | | | | RELNOTES: None. PiperOrigin-RevId: 198882702
* Add a pretty-printer class to SkylarkGravatar Klaus Aehlig2018-05-29
| | | | | | | | | | | With the recording of the results of repository rules (that eventually will lead to an implementation of the WORKSPACE.resolved proposal) bazel started writing out lengthy Skylark values. To make this file more readable for humans, add a Skylkark printer that does at least some basic line breaking and indenting. Change-Id: I469d029421df9212b43747509dd17bd6c64da4a8 PiperOrigin-RevId: 198389112
* [Skylark] Size newly created arrays to avoid unnecessary re-allocations.Gravatar Taras Tsugrii2018-05-24
| | | | | | | | | | | | It's more efficient to use properly sized array builders to avoid having a need to dynamically adjust the size of the underlying array. The result is improved performance (no need to copy elements to newly created array) and better memory efficiency - no need to re-allocate and no extra space is wasted. Closes #5241. PiperOrigin-RevId: 197946723
* Fix SkylarkCallable-annotation detection to appropriately handle methods ↵Gravatar cparsons2018-05-24
| | | | | | | with generic parameters RELNOTES: None. PiperOrigin-RevId: 197932265
* Reject files when the first line is indented.Gravatar laurentlb2018-05-24
| | | | | | | | | | | | A bug in the lexer ignored indentation on the first line of a file. This now causes an error. Also, remove the COMMENT token from the lexer. Comments are now accessed separately. This will allow further optimizations in the lexer. It also aligns the code a bit more with the Go implementation. RELNOTES[INC]: Indentation on the first line of a file was previously ignored. This is now fixed. PiperOrigin-RevId: 197889775
* Delete GlobListGravatar laurentlb2018-05-24
| | | | | RELNOTES: None. PiperOrigin-RevId: 197881012
* Initial implementation of a Skylark debug server API.Gravatar Googler2018-05-23
| | | | | | | | | | | | | | | | | | I've pulled out the API for separate review. It includes all hooks from blaze/skylark used by the debugger. Debuggable thread contexts are currently declared in 3 places: - BuildFileAST (top-level evaluation of BUILD files) - SkylarkRuleConfiguredTargetUtil (rules) - SkylarkAspectFactory (aspects) The purpose of declaring these contexts is so that the debugger can track currently-active threads (and stop tracking them when the task is completed). Details of the actual debugging server are in unknown commit. PiperOrigin-RevId: 197770547
* Create GlobalBootstrap and the Bootstrap interface to add portions of the ↵Gravatar cparsons2018-05-23
| | | | | | | build API to a global environment. RELNOTES: None. PiperOrigin-RevId: 197742427
* Remove deprecated method that no longer has any usages.Gravatar dannark2018-05-23
| | | | | RELNOTES: None PiperOrigin-RevId: 197731580
* Add typo detection when lookups on SkylarkModules fail.Gravatar Googler2018-05-22
| | | | | | Also consolidate code with getattr so getattr now also gets typo detection. PiperOrigin-RevId: 197612666
* Make the parser look at only one Token at a time.Gravatar laurentlb2018-05-22
| | | | | | | | | Remove all references to `Token` (except one) in the parser. In particular, remove the mechanism to push tokens back. This change will make possible for the lexer to reuse tokens instead of allocating new objects each time. RELNOTES: None. PiperOrigin-RevId: 197585185
* Skylark: do not eagerly scan the whole fileGravatar laurentlb2018-05-22
| | | | | | | | With this change, the parser explicitly asks the lexer to give the next token. To avoid changing the lexer too much, the tokenize() method populates a queue (it may add multiple tokens at the same time). While this reduces the peak memory usage, further work is needed to actually improve the performance. RELNOTES: None. PiperOrigin-RevId: 197576326
* Remove glob list from native rulesGravatar laurentlb2018-05-16
| | | | | | | | Since the glob() function now returns a standard list, some code can be simplified. RELNOTES: None. PiperOrigin-RevId: 196867957
* Remove --incompatible_disable_glob_tracking flag.Gravatar laurentlb2018-05-16
| | | | | | RELNOTES: Flag `--incompatible_disable_glob_tracking` is removed. PiperOrigin-RevId: 196852718
* Adds a ?null check and return false? code block in equals() method ↵Gravatar Googler2018-05-15
| | | | | | overridden by classes which would?ve otherwise thrown an NPE. PiperOrigin-RevId: 196680390
* Fix some code font issuesGravatar ronshapiro2018-05-14
| | | | | RELNOTES: None. PiperOrigin-RevId: 196561473
* Add --incompatible_disallow_legacy_javainfo flag.Gravatar tomlu2018-05-02
| | | | | | | | When set to true, old-style JavaInfo provider construction methods become an error. RELNOTES[INC]: Add --incompatible_disallow_legacy_javainfo flag. PiperOrigin-RevId: 195104452
* Clean up code that directly imports nested classes like Builder, Entry, etc.Gravatar jcater2018-05-01
| | | | PiperOrigin-RevId: 195040539
* Move BazelLibrary from syntax/ to packages/Gravatar brandjon2018-05-01
| | | | | | | | | This helps the Skylark interpreter to not depend on Bazel concepts, though it adds a temporary dependency of Skylint on packages/. The fix for that will be to create a Build API interface for BazelLibrary (e.g., "BazelLibraryAPI"). Refactored some GlobalFrame construction logic to be more uniform. Instead of constructing a whole Environment just to get a frame, we build the frame directly, using ImmutableMap.Builder to accumulate bindings. This convention may further change once we convert MethodLibrary and the like to @SkylarkGlobalLibrary, but for now it's more readable. RELNOTES: None PiperOrigin-RevId: 194960824
* Pass environment to Skylark provider constructors.Gravatar tomlu2018-04-24
| | | | | | | This is needed for constructors that want to be able to use SkylarkSemantics. RELNOTES: None PiperOrigin-RevId: 194180124
* Introduce @SkylarkCallable.selfCall, to signify the containing class should ↵Gravatar cparsons2018-04-24
| | | | | | | | | | | | be treated as a callable skylark object. This will allow Skylark Provider objects to be better specified. For example, "JavaInfo" can have a fully-documented, fully-specified @SkylarkCallable method with selfCall=true to represent the method JavaInfo(), instead of being a subclass of BaseFunction and requiring a @SkylarkSignature annotation. There are no usages of this pattern introduced in this CL, and also no updates to docgen to support the new pattern. These will be introduced in another CL. RELNOTES: None. PiperOrigin-RevId: 194088227
* Start refactoring elements of the Skylark Build API into their own package.Gravatar cparsons2018-04-23
| | | | | RELNOTES: None. PiperOrigin-RevId: 193962460
* Remove use of bare Immutable{List,Map,Set} Builder classes.Gravatar jcater2018-04-19
| | | | | | Always use the more-qualified class name for clarity at the site of use. There are too many classes named Builder. PiperOrigin-RevId: 193624381
* Handle InterruptedException thrown from @SkylarkCallable methods appropriately.Gravatar cparsons2018-04-18
| | | | | RELNOTES: None. PiperOrigin-RevId: 193370435
* Refactor SyntaxTests to not rely on actions/analysis packages arbitrarilyGravatar brandjon2018-04-17
| | | | | | | | | | | | | | | In the process, clean up SkylarkType-related tests. - Factor test of EvalUtils.getSkylarkType logic from SkylarkEvaluationTest and ValidationTest to EvalUtilsTest. - Move test of EvalUtils.getSkylarkType's behavior on lists to SkylarkListTest. - Move other SkylarkType tests from ValidationTest to new SkylarkTypeTest and split them up a little. - Throughout, don't use Bazel types like Artifact as test subjects. RELNOTES: None PiperOrigin-RevId: 193303463
* Create @SkylarkGlobalLibrary annotation, allowing classes/interfaces with ↵Gravatar cparsons2018-04-16
| | | | | | | | | global skylark functions to use @SkylarkCallable instead of @SkylarkSignature. Also migrate skylark's global "rule" function to @SkylarkCallable, thus demonstrating the new feature. RELNOTES: None. PiperOrigin-RevId: 193085313
* Introduce `--incompatible_disallow_filetype` to remove the `FileType` function.Gravatar laurentlb2018-04-13
| | | | | | | | RELNOTES: `FileType` is deprecated and will be removed soon. Try the `--incompatible_disallow_filetype` flag to ensure your code is forward-compatible. PiperOrigin-RevId: 192758063
* Remove flag `incompatible_disallow_toplevel_if_statement`.Gravatar laurentlb2018-04-12
| | | | | | RELNOTES: Removed flag `--incompatible_disallow_toplevel_if_statement`. PiperOrigin-RevId: 192621765
* Migrate StringModule methods to SkylarkCallable from SkylarkSignature.Gravatar cparsons2018-04-11
| | | | | | | StringModule is a special case in a number of places because it represents effectively methods which should be annotated on String.class. However, String may not be subclassed in Java. StringModule thus serves as a proxy module for String. RELNOTES: None. PiperOrigin-RevId: 192508607
* Introduce Param.legacyNamed() to handle migration from @SkylarkSignature to ↵Gravatar cparsons2018-04-11
| | | | | | | | | | @SkylarkCallable. @SkylarkSignature.parameters() treat named()=true for parameters regardless of whether named() was actually set to true, and thus for ease of migration we mark migrated parameters as legacyNamed() = true, which is currently semantically equivalent to named() = true. We make a distinction so that it's easier to bulk fix these later. RELNOTES: None. PiperOrigin-RevId: 192477405
* Introduce `--incompatible_disallow_slash_operator` to disable `/` operator.Gravatar laurentlb2018-04-11
| | | | | | | | RELNOTES: The `/` operator is deprecated in favor of `//` (floor integer division). Try the `--incompatible_disallow_slash_operator` flag to ensure your code is forward-compatible. PiperOrigin-RevId: 192430310
* Fix typo in error message (incompatible_package_name_is_a_function).Gravatar laurentlb2018-04-11
| | | | | RELNOTES: None. PiperOrigin-RevId: 192425838
* Remove support for the --incompatible_disallow_three_arg_vardef command line ↵Gravatar lberki2018-04-10
| | | | | | | | | option. It was used for a migration, which is now done. RELNOTES: None. PiperOrigin-RevId: 192246659
* Fix Printer.getPrinter(boolean)Gravatar brandjon2018-04-09
| | | | | | | Also rename it to a separate function since boolean args are vague. RELNOTES: None PiperOrigin-RevId: 192201308
* Introduce extraPositonals and extraArguments to SkylarkCallable, to have ↵Gravatar cparsons2018-04-09
| | | | | | | | | parity with @SkylarkSignature. This is necessary for several builtin functions that still use @SkylarkSignature, such as string format. These will be migrated in a future CL. RELNOTES: None. PiperOrigin-RevId: 192200282
* Cleanup @SkylarkCallable parameters and their error handling.Gravatar cparsons2018-04-06
| | | | | | | This involves enforcing additional compiletime restrictions on Param ordering and semantics. RELNOTES: None. PiperOrigin-RevId: 191927206
* Split Args#add into three methods.Gravatar tomlu2018-04-05
| | | | | | | | | | | Args#add(value, *, arg, format) Args#add_all(value, *, arg, map_each, format_each, before_each, omit_if_empty, uniquify) Args#add_joined(value, *, arg, join_with, map_each, format_each, format_joined, omit_if_empty, uniquify) The old Args#add remains backwards compatible, but we add a flag to disable this compatibility mode. RELNOTES: None PiperOrigin-RevId: 191804482
* Introduces a SourceArtifact type.Gravatar shahan2018-04-05
| | | | | | | SourceArtifact.getPath() is considered safe and eventually we may restrict getPath() to only SourceArtifact. PiperOrigin-RevId: 191768519
* Migrate SkylarkNativeModule methods to use @SkylarkCallable instead of ↵Gravatar cparsons2018-04-04
| | | | | | | | | @SkylarkSignature Most notably, this involves introduction of a new function abstraction, BuiltinMethod, which can wrap a {objc, SkylarkCallable} pair into a BaseFunction for later calling. (This is required due to the current layer of indirection on the end "native" module) RELNOTES: None. PiperOrigin-RevId: 191642467