X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fmetadata%2Fctf-visitor-semantic-validator.c;h=1af74c42a8db04577d47a4d35c28c5509f9195f0;hp=3db7fd7751eaa29672de85c317db11384b5ac030;hb=f133896d405417ba90ac250d243d4b8e539e98f1;hpb=fef3bf22431390dae389d378b7709366b158b83d diff --git a/formats/ctf/metadata/ctf-visitor-semantic-validator.c b/formats/ctf/metadata/ctf-visitor-semantic-validator.c index 3db7fd77..1af74c42 100644 --- a/formats/ctf/metadata/ctf-visitor-semantic-validator.c +++ b/formats/ctf/metadata/ctf-visitor-semantic-validator.c @@ -110,6 +110,7 @@ int ctf_visitor_unary_expression(FILE *fd, int depth, struct ctf_node *node) case NODE_ENV: case NODE_TRACE: case NODE_CLOCK: + case NODE_CALLSITE: case NODE_TYPEDEF: case NODE_TYPEALIAS_TARGET: case NODE_TYPEALIAS_ALIAS: @@ -214,6 +215,7 @@ int ctf_visitor_type_specifier_list(FILE *fd, int depth, struct ctf_node *node) case NODE_ENV: case NODE_TRACE: case NODE_CLOCK: + case NODE_CALLSITE: case NODE_UNARY_EXPRESSION: case NODE_TYPEALIAS: case NODE_TYPE_SPECIFIER: @@ -255,6 +257,7 @@ int ctf_visitor_type_specifier(FILE *fd, int depth, struct ctf_node *node) case NODE_ENV: case NODE_TRACE: case NODE_CLOCK: + case NODE_CALLSITE: case NODE_UNARY_EXPRESSION: case NODE_TYPEALIAS: case NODE_TYPE_SPECIFIER: @@ -337,6 +340,7 @@ int ctf_visitor_type_declarator(FILE *fd, int depth, struct ctf_node *node) case NODE_ENV: case NODE_TRACE: case NODE_CLOCK: + case NODE_CALLSITE: case NODE_CTF_EXPRESSION: case NODE_UNARY_EXPRESSION: case NODE_TYPEALIAS: @@ -516,7 +520,20 @@ int _ctf_visitor_semantic_check(FILE *fd, int depth, struct ctf_node *node) return ret; } break; + case NODE_CALLSITE: + switch (node->parent->type) { + case NODE_ROOT: + break; /* OK */ + default: + goto errinval; + } + bt_list_for_each_entry(iter, &node->u.callsite.declaration_list, siblings) { + ret = _ctf_visitor_semantic_check(fd, depth + 1, iter); + if (ret) + return ret; + } + break; case NODE_CTF_EXPRESSION: switch (node->parent->type) { @@ -526,6 +543,7 @@ int _ctf_visitor_semantic_check(FILE *fd, int depth, struct ctf_node *node) case NODE_ENV: case NODE_TRACE: case NODE_CLOCK: + case NODE_CALLSITE: case NODE_FLOATING_POINT: case NODE_INTEGER: case NODE_STRING: @@ -593,6 +611,7 @@ int _ctf_visitor_semantic_check(FILE *fd, int depth, struct ctf_node *node) case NODE_ENUMERATOR: case NODE_ENUM: case NODE_CLOCK: + case NODE_CALLSITE: case NODE_ENV: default: goto errinval; @@ -699,6 +718,7 @@ int _ctf_visitor_semantic_check(FILE *fd, int depth, struct ctf_node *node) case NODE_ENUMERATOR: case NODE_ENUM: case NODE_CLOCK: + case NODE_CALLSITE: case NODE_ENV: default: goto errinval;