pascalabcnet/AdditionalLanguages/SPython/SyntaxTreeConverters/SPythonStandardTreeConverter/AddForwardDeclarationsVisitor.cs
Александр Земляк 17f6a9b956
Spython test suite (#3362)
* Reorganize files in TestSuite dir for multiple languages

* Add SPython samples to TestSuite

* Update TestRunner to support multiple languages

* Delete dll files accidentally pushed

* Update .gitignore

* Revert "Delete dll files accidentally pushed"

This reverts commit 62bcba2b821d58ae51ec98e9dadcf621bb0fc003.

* Update testing dir path in Testing.cs

* Improve TestRunner output

* Add random module and it's usage sample

* Reorganize gitignore files

* Move pascal tests back to TestSuite and create new TestSuiteLanguagePlugins folder for SPython

* Revert "Update testing dir path in Testing.cs"

This reverts commit 7d94eafb25292421bce8315520b4f6a0de001bbd.

* Revert crlf changes in pascal tests

* Test changes of _RebuildReleaseAndRunTestsForGitHubActions.bat

* Revert "Test changes of _RebuildReleaseAndRunTestsForGitHubActions.bat"

This reverts commit 234ceae3e3a339fbc68a6170e2bd201dab14d67d.

* Test changes in StorageLocationPicker

* Another test changes in StorageLocationPicker.cs

* Rename LanguagePlugins folder to AdditionalLanguages

* Decouple TestRunner from language names and parameters

* Revert calling TestRunner without parameters in .bat files

* Fix formatter tests nogui exception handling

* Small refactoring in Testing.cs and TestRunner fix of working directory
2025-12-21 21:11:52 +03:00

37 lines
1.1 KiB
C#

using PascalABCCompiler.SyntaxTree;
namespace Languages.SPython.Frontend.Converters
{
internal class AddForwardDeclarationsVisitor : BaseChangeVisitor
{
private declarations decls;
public override void Enter(syntax_tree_node stn)
{
if (stn is program_module pm)
{
decls = pm.program_block.defs;
}
if (stn is interface_node intn)
{
decls = intn.interface_definitions;
}
base.Enter(stn);
}
public override void visit(procedure_header _procedure_header)
{
SourceContext context = _procedure_header.source_context;
var pd = new procedure_definition(_procedure_header.TypedClone(), null, context);
pd.proc_header.proc_attributes.Add(new procedure_attribute(proc_attribute.attr_forward, context));
decls.Add(pd, context);
}
public override void visit(function_header _function_header)
{
visit(_function_header as procedure_header);
}
}
}