diff --git a/test/corpus/allocators.txt b/test/corpus/allocators.txt new file mode 100644 index 0000000..2e77ec7 --- /dev/null +++ b/test/corpus/allocators.txt @@ -0,0 +1,474 @@ +================================================================================ +subtype indication (subtype mark: identifier) +================================================================================ + +procedure P is +begin + A := new T; +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + subtype_mark: (identifier))))))))) + +================================================================================ +subtype indication (subtype mark: selected component) +================================================================================ + +procedure P is +begin + A := new X.T; +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + subtype_mark: (selected_component + prefix: (identifier) + selector_name: (identifier)))))))))) + +================================================================================ +subtype indication (subtype mark: attribute reference) +================================================================================ + +procedure P is +begin + A := new T'Base; +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + subtype_mark: (identifier) + subtype_mark: (tick) + subtype_mark: (attribute_designator + (identifier)))))))))) + +================================================================================ +subtype indication (null exclusion) +================================================================================ + +procedure P is +begin + A := new not null T; +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (null_exclusion) + subtype_mark: (identifier))))))))) + +================================================================================ +subtype indication (constraint: index constraint) +================================================================================ + +procedure P is +begin + A := new T (1 .. 10, 1 .. 20); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + subtype_mark: (identifier) + (index_constraint + (range_g + (term + (numeric_literal)) + (term + (numeric_literal))) + (range_g + (term + (numeric_literal)) + (term + (numeric_literal)))))))))))) + +================================================================================ +subtype indication (constraint: discriminant constraint - numeric literal) +================================================================================ + +procedure P is +begin + A := new T (100); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + subtype_mark: (identifier) + (discriminant_constraint + (expression + (term + (numeric_literal)))))))))))) + +================================================================================ +subtype indication (constraint: discriminant constraint - discriminant association) +================================================================================ + +procedure P is +begin + A := new T (F => 100); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + subtype_mark: (identifier) + (discriminant_constraint + (discriminant_association + (identifier) + (expression + (term + (numeric_literal))))))))))))) + +================================================================================ +subtype indication (constraint: discriminant constraint - identifier) +================================================================================ + +procedure P is +begin + A := new T (F); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + subtype_mark: (identifier) + (discriminant_constraint + (expression + (term + name: (identifier)))))))))))) + +================================================================================ +qualified expression (aggregate: positional array aggregate) +================================================================================ + +procedure P is +begin + A := new T'(0, 255, 0); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (qualified_expression + subtype_name: (identifier) + (tick) + (positional_array_aggregate + (expression + (term + (numeric_literal))) + (expression + (term + (numeric_literal))) + (expression + (term + (numeric_literal))))))))))))) + +================================================================================ +qualified expression (aggregate: record aggregate) +================================================================================ + +procedure P is +begin + A := new T'(F => 1); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (qualified_expression + subtype_name: (identifier) + (tick) + (record_aggregate + (record_component_association_list + (component_choice_list + (identifier)) + (expression + (term + (numeric_literal)))))))))))))) + +================================================================================ +qualified expression (aggregate: named array aggregate) +================================================================================ + +procedure P is +begin + A := new T'(1 .. 10 => (1 .. 20 => 0.0)); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (qualified_expression + subtype_name: (identifier) + (tick) + (named_array_aggregate + (array_component_association + (discrete_choice_list + (discrete_choice + (range_g + (term + (numeric_literal)) + (term + (numeric_literal))))) + (expression + (term + (named_array_aggregate + (array_component_association + (discrete_choice_list + (discrete_choice + (range_g + (term + (numeric_literal)) + (term + (numeric_literal))))) + (expression + (term + (numeric_literal)))))))))))))))))) + +================================================================================ +qualified expression (expression: numeric literal) +================================================================================ + +procedure P is +begin + A := new T'(55); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (qualified_expression + subtype_name: (identifier) + (tick) + (expression + (term + (numeric_literal)))))))))))) + +================================================================================ +qualified expression (expression: identifier) +================================================================================ + +procedure P is +begin + A := new T'(F); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (qualified_expression + subtype_name: (identifier) + (tick) + (expression + (term + name: (identifier)))))))))))) + +================================================================================ +qualified expression (subtype mark: attribute reference) +================================================================================ + +procedure P is +begin + A := new T'Base'(5); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (qualified_expression + subtype_name: (identifier) + subtype_name: (tick) + subtype_name: (attribute_designator + (identifier)) + (tick) + (expression + (term + (numeric_literal)))))))))))) + +================================================================================ +subpool specification +================================================================================ + +procedure P is +begin + A := new (pkg.pool) T; + A := new (pkg.pool) T'(55); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (subprogram_body + (procedure_specification + name: (identifier)) + (handled_sequence_of_statements + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (subpool_specification + subpool_handle_name: (selected_component + prefix: (identifier) + selector_name: (identifier))) + subtype_mark: (identifier))))) + (assignment_statement + variable_name: (identifier) + (expression + (term + (allocator + (subpool_specification + subpool_handle_name: (selected_component + prefix: (identifier) + selector_name: (identifier))) + (qualified_expression + subtype_name: (identifier) + (tick) + (expression + (term + (numeric_literal)))))))))))) diff --git a/test/corpus/statements.txt b/test/corpus/statements.txt index 35ca315..e77577b 100644 --- a/test/corpus/statements.txt +++ b/test/corpus/statements.txt @@ -435,238 +435,6 @@ end; (character_literal))))) (null_statement))))))) -================================================================================ -Allocators -================================================================================ - -procedure P is -begin - -- subtype indication - A := new T; - A := new not null T; - A := new T'Base; - A := new T (1 .. 10, 1 .. 20); - A := new T (100); - A := new T (F => 100); - A := new T (F); - - -- qualified expression - A := new T'(0, 255, 0); - A := new T'(F => 1); - A := new T'(1 .. 10 => (1 .. 20 => 0.0)); - A := new T'(55); - A := new T'(F); - A := new T'Base'(5); - - -- subpool specification - A := new (pkg.pool) T'((F => 1)); -end; - --------------------------------------------------------------------------------- - -(compilation - (compilation_unit - (subprogram_body - (procedure_specification - name: (identifier)) - (comment) - (handled_sequence_of_statements - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - subtype_mark: (identifier))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (null_exclusion) - subtype_mark: (identifier))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - subtype_mark: (identifier) - subtype_mark: (tick) - subtype_mark: (attribute_designator - (identifier)))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - subtype_mark: (identifier) - (index_constraint - (range_g - (term - (numeric_literal)) - (term - (numeric_literal))) - (range_g - (term - (numeric_literal)) - (term - (numeric_literal)))))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - subtype_mark: (identifier) - (discriminant_constraint - (expression - (term - (numeric_literal)))))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - subtype_mark: (identifier) - (discriminant_constraint - (discriminant_association - (identifier) - (expression - (term - (numeric_literal))))))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - subtype_mark: (identifier) - (discriminant_constraint - (expression - (term - name: (identifier)))))))) - (comment) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (qualified_expression - subtype_name: (identifier) - (tick) - (positional_array_aggregate - (expression - (term - (numeric_literal))) - (expression - (term - (numeric_literal))) - (expression - (term - (numeric_literal))))))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (qualified_expression - subtype_name: (identifier) - (tick) - (record_aggregate - (record_component_association_list - (component_choice_list - (identifier)) - (expression - (term - (numeric_literal)))))))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (qualified_expression - subtype_name: (identifier) - (tick) - (named_array_aggregate - (array_component_association - (discrete_choice_list - (discrete_choice - (range_g - (term - (numeric_literal)) - (term - (numeric_literal))))) - (expression - (term - (named_array_aggregate - (array_component_association - (discrete_choice_list - (discrete_choice - (range_g - (term - (numeric_literal)) - (term - (numeric_literal))))) - (expression - (term - (numeric_literal)))))))))))))) - - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (qualified_expression - subtype_name: (identifier) - (tick) - (expression - (term - (numeric_literal)))))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (qualified_expression - subtype_name: (identifier) - (tick) - (expression - (term - name: (identifier)))))))) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (qualified_expression - subtype_name: (identifier) - subtype_name: (tick) - subtype_name: (attribute_designator - (identifier)) - (tick) - (expression - (term - (numeric_literal)))))))) - (comment) - (assignment_statement - variable_name: (identifier) - (expression - (term - (allocator - (subpool_specification - subpool_handle_name: (selected_component - prefix: (identifier) - selector_name: (identifier))) - (qualified_expression - subtype_name: (identifier) - (tick) - (expression - (term - (record_aggregate - (record_component_association_list - (component_choice_list - (identifier)) - (expression - (term - (numeric_literal)))))))))))))))) - ================================================================================ Filtered for loops ================================================================================