You've already forked libadalang
mirror of
https://github.com/AdaCore/libadalang.git
synced 2026-02-12 12:28:54 -08:00
Move most of "ada/*" to the root directory (this makes sense, as this repository has been dedicated to Libadalang for years), and rename "ada/language" to "ada". TN: T914-010
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
import libadalang
|
|
|
|
|
|
src_buffer_1 = b"""
|
|
limited with Ada.Text_IO;
|
|
|
|
procedure Foo is
|
|
function \"+\" (S : String) return String is (S);
|
|
begin
|
|
Ada.Text_IO.Put_Line (+\"Hello, world!\");
|
|
end Foo;
|
|
"""
|
|
|
|
src_buffer_2 = src_buffer_1.split(b' ', 1)[1]
|
|
|
|
|
|
def check(unit):
|
|
assert unit, 'Could not create the analysis unit for foo.adb from a buffer'
|
|
print('WithClause: has_limited = {}'.format(
|
|
unit.root.f_prelude[0].f_has_limited
|
|
))
|
|
|
|
|
|
ctx = libadalang.AnalysisContext('iso-8859-1')
|
|
|
|
# Make sure the first parsing (with the "limited" keyword) works properly and
|
|
# check is_limited.
|
|
print('1. Parsing using buffer 1')
|
|
unit = ctx.get_from_buffer('foo.adb', src_buffer_1)
|
|
check(unit)
|
|
|
|
# Now make sure getting the unit with reparsing (without the "limited" keyword)
|
|
# clears is_limited.
|
|
print('2. Parsing using buffer 2')
|
|
unit = ctx.get_from_buffer('foo.adb', src_buffer_2)
|
|
check(unit)
|
|
|
|
# Finally make sure reparsing the unit (with the "limited" keyword) sets
|
|
# is_limited.
|
|
print('3. Reparsing using buffer 1')
|
|
unit.reparse(src_buffer_1)
|
|
check(unit)
|
|
|
|
print('Done.')
|