aboutsummaryrefslogtreecommitdiff
path: root/tests/variable
AgeCommit message (Collapse)AuthorFilesLines
2018-05-19Update copyright yearKaren Arutyunov8-8/+8
2018-05-19Get rid of doc{version} and types for testscript and manifest in buildfilesKaren Arutyunov4-4/+4
2018-05-03Regularize directory target/scope-specific variable assignment syntaxBoris Kolpackov5-3/+128
2017-12-16Redo string/stream representation of dir{} name/targetBoris Kolpackov1-8/+8
Now instead of: dir{foo/bar/} We get: foo/dir{bar/} Which feels more consistent with how we print other names/targets. That is, "directory bar/ in directory foo/" similar how foo/exe{bar} is "executable bar in directory foo/".
2017-11-20Add test for prerequisite-specific variablesBoris Kolpackov2-0/+76
2017-03-14Implement implied buildfile supportBoris Kolpackov1-5/+0
In essence, if the buildfile is: ./: */ Then it can be omitted entirely (provided there is at least one subdirectory).
2017-02-13Use variable_cache for target type/pattern-specific prepend/appendBoris Kolpackov3-0/+88
2016-12-01Move old tests to old-tests/Boris Kolpackov35-918/+0
2016-12-01Allow implicit (lexical) typed-to-typed conversionBoris Kolpackov1-3/+3
2016-11-23Implement value type propagation on expansionBoris Kolpackov1-3/+3
Currently, we only propagate types of sole, unquoted expansions (variable, function call, or eval context), similar to NULL. To untypify the value, simply quote it.
2016-11-04When assigning always ignore existing value typeBoris Kolpackov2-0/+5
For example: x = [uint64] 1 x = a # Ok.
2016-08-30Add support for using '*' as target type in variable assignmentBoris Kolpackov1-0/+6
So these three are equivalent: *: foo = 1 {*}: foo = 2 *{*}: foo = 3
2016-07-28Adjust to new path implementation, use to support reversibilityBoris Kolpackov5-0/+77
2016-07-22Change default var override from 'projects and subprojects' to amalgamationBoris Kolpackov2-0/+11
The 'projects and subprojects' semantics resulted in some counter-intuitive behavior. For example, in a project with tests/ as a subproject if one builds one of the tests directly with a non-global override (say C++ compiler), then the main project would be built without the overrides. I this light, overriding in the whole amalgamation seems like the right thing to do. The old behavior can still be obtained with scope qualification, for example: b ./:foo=bar
2016-07-16Add support for prepend/append in target type/pattern-specific varsBoris Kolpackov3-0/+69
Semantically, these are similar to variable overrides and are essentially treated as "templates" that are applied on lookup to the "stem" value that is specific to the target type/name. For example: x = [string] a file{f*}: x =+ b sub/: { file{*}: x += c print $(file{foo}:x) # abc print $(file{bar}:x) # ac }
2016-06-18Port to MinGWKaren Arutyunov6-9/+31
2016-04-21Fix legacy stuff in testsBoris Kolpackov1-1/+0
2016-04-18Add support for using value attributes in eval contextBoris Kolpackov2-3/+3
For example: if ($x == [null]) Or: if ([uint64] 01 == [uint64] 1)
2016-04-12Add support for scope-qualification of overrides, scope visibilityBoris Kolpackov1-2/+42
2016-04-06Test and fix override logicBoris Kolpackov7-0/+366
2016-04-05Add support for scope/target-qualified variable expansionBoris Kolpackov3-0/+42
For example: print $(dir/:var) print $(file{target}:var) print $(dir/file{target}:var) Note that if the scope/target does not (yet) exists, it will be created.
2016-04-04Implement value typing, null support via value attributesBoris Kolpackov5-4/+104
For example: v = [null] v = [string] abc v += ABC # abcABC
2016-04-02Implement variable typing (via attributes)Boris Kolpackov3-0/+26
Now we can do: [string] str = foo
2016-03-31Set part of variable override implementationBoris Kolpackov2-2/+2
2016-03-28Add support for pair representation reversibilityBoris Kolpackov2-0/+16
2015-12-14Add support for variable prepend operator: =+Boris Kolpackov3-0/+21
2015-11-30Implement target type/pattern-specific variablesBoris Kolpackov1-0/+33
For example: cxx{*-options}: dist = true 1. Only single '*' wildcard is supported, matches 0 or more characters. 2. If target type is not specified, it defaults to any target. 3. Appending (+=) is not allowed. 4. The value is expanded immediately in the context of the scope. 5. The more specific pattern (i.e., with the shortest "stem") is preferred. If the stem has the same length, then the last defined (but not redefined) pattern is used. This will probably have to change to become an error. See tests/variable/type-pattern for more examples.
2015-09-09Add support for evaluation contextBoris Kolpackov3-0/+35
For now it acts as just the value mode that can be enabled anywhere variable expansion is supported, for example: (foo=bar): And the primary use currently is to enable/test quoted and indirect variable expansion: "foo bar" = FOO BAR print $"foo bar" # Invalid. print $("foo bar") # Yeah, baby. foo = FOO FOO = foo print $($foo) Not that you should do something like this...
2015-08-24Only treat name as directory if it is reversibleBoris Kolpackov2-0/+12
2015-08-24Add support for reversing project qualification to string valueBoris Kolpackov4-0/+38