| # Check identifier specific parsing functionality. |
| # |
| # RUN: %{llbuild} ninja parse %s 2> %t.err |
| # RUN: %{FileCheck} < %t.err %s |
| |
| # Check for identifier specific cases in non-binding contents. |
| # |
| # CHECK: actOnBeginPoolDecl(/*Name=*/"pool") |
| pool pool |
| depth = 10 |
| |
| # CHECK: actOnBeginRuleDecl(/*Name=*/"rule") |
| rule rule |
| command = echo value |
| |
| # Check identifier specific cases in bindings, for all the other contexts. |
| # CHECK: actOnBeginBuildDecl(/*Name=*/"rule", /*Outputs=*/["foo"], /*Inputs=*/["baz"] |
| build foo: rule baz |
| # CHECK: actOnBuildBindingDecl(/*Decl=*/{{.*}}, /*Name=*/"rule", /*Value=*/"a") |
| rule = a |
| # CHECK: actOnBuildBindingDecl(/*Decl=*/{{.*}}, /*Name=*/"pool", /*Value=*/"pool") |
| pool = pool |
| # CHECK: actOnBuildBindingDecl(/*Decl=*/{{.*}}, /*Name=*/"build", /*Value=*/"a") |
| build = a |
| # CHECK: actOnBuildBindingDecl(/*Decl=*/{{.*}}, /*Name=*/"default", /*Value=*/"a") |
| default = a |
| # CHECK: actOnBuildBindingDecl(/*Decl=*/{{.*}}, /*Name=*/"include", /*Value=*/"a") |
| include = a |
| # CHECK: actOnBuildBindingDecl(/*Decl=*/{{.*}}, /*Name=*/"subninja", /*Value=*/"a") |
| subninja = a |
| # This trailing blank line tests we switch out of identifier specific mode for the next decl |
| # |
| # CHECK: actOnDefaultDecl(/*Names=*/["foo"]) |
| default foo |
| |
| # This is still an error though. |
| # |
| # CHECK: identifier-specific-parsing.ninja:[[@LINE+1]]:5: error: expected pool name identifier |
| pool = bar |
| |