Allow pragmas inside records
This commit is contained in:
parent
b9645c74b2
commit
fb54a00c16
|
|
@ -1054,8 +1054,9 @@ module.exports = grammar({
|
|||
_component_item: $ => choice(
|
||||
$.component_declaration,
|
||||
$._aspect_clause,
|
||||
$.pragma_g, // not in RM
|
||||
),
|
||||
component_declaration: $ => seq(
|
||||
component_declaration: $ => seq( // RM 3.8
|
||||
$._defining_identifier_list,
|
||||
':',
|
||||
$.component_definition,
|
||||
|
|
@ -1842,7 +1843,7 @@ module.exports = grammar({
|
|||
';',
|
||||
$.parameter_specification,
|
||||
),
|
||||
pragma_g: $ => seq(
|
||||
pragma_g: $ => seq( // RM 2.8
|
||||
reservedWord('pragma'),
|
||||
$.identifier,
|
||||
optional(seq(
|
||||
|
|
|
|||
|
|
@ -5928,6 +5928,10 @@
|
|||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "_aspect_clause"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "pragma_g"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1875,6 +1875,10 @@
|
|||
"type": "enumeration_representation_clause",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "pragma_g",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "record_representation_clause",
|
||||
"named": true
|
||||
|
|
|
|||
25447
src/parser.c
25447
src/parser.c
File diff suppressed because it is too large
Load Diff
62
test/corpus/pragmas.txt
Normal file
62
test/corpus/pragmas.txt
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
================================================================================
|
||||
pragma on record field
|
||||
================================================================================
|
||||
|
||||
package P is
|
||||
type R is record
|
||||
Started : Boolean := False;
|
||||
pragma Atomic (Started);
|
||||
end record;
|
||||
pragma Foo;
|
||||
end;
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(compilation
|
||||
(compilation_unit
|
||||
(package_specification
|
||||
(identifier)
|
||||
(full_type_declaration
|
||||
(identifier)
|
||||
(record_type_definition
|
||||
(record_definition
|
||||
(component_list
|
||||
(component_declaration
|
||||
(identifier)
|
||||
(component_definition
|
||||
(identifier))
|
||||
(expression
|
||||
(term
|
||||
(identifier))))
|
||||
(pragma_g
|
||||
(identifier)
|
||||
(pragma_argument_association
|
||||
(expression
|
||||
(term
|
||||
(identifier)))))))))
|
||||
(pragma_g
|
||||
(identifier)))))
|
||||
|
||||
================================================================================
|
||||
pragma in statement
|
||||
================================================================================
|
||||
|
||||
procedure P is
|
||||
begin
|
||||
null;
|
||||
pragma Foo;
|
||||
null;
|
||||
end;
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(compilation
|
||||
(compilation_unit
|
||||
(subprogram_body
|
||||
(procedure_specification
|
||||
(identifier))
|
||||
(handled_sequence_of_statements
|
||||
(null_statement)
|
||||
(pragma_g
|
||||
(identifier))
|
||||
(null_statement)))))
|
||||
Loading…
Reference in New Issue
Block a user