vein-lang / vein

🔮⚡️Vein is an open source high-level strictly-typed programming language with a standalone OS, arm and quantum computing support.
https://vein-lang.org
MIT License
47 stars 6 forks source link

Fixes/compilation cases incorrect #238

Closed 0xF6 closed 2 months ago

0xF6 commented 2 months ago

Summary by CodeRabbit

coderabbitai[bot] commented 2 months ago

Walkthrough

The changes span various components of the project, introducing new functionalities, refining existing features, and implementing checksum methods for file handling. Specific updates include conditional logic for the DryRun setting, syntax positioning enhancements, scope-aware variable handling, refined command-line arguments, improved task scheduling, and extensive new test cases. These updates collectively enhance syntax parsing, variable scope resolution, and testing robustness, boosting the overall stability and functionality of the codebase.

Changes

File(s) Change Summary
compiler/Properties/launchSettings.json Added a new command for specific build parameters.
compiler/cmd/NewCommand.cs Added a condition to save files only if DryRun is false.
...ax/syntax/Statement.cs Added .Positioned() calls to various statement types.
...ax/syntax/ast/DeleteStatementSyntax.cs Added methods and initialized properties for positioning information.
...ax/syntax/ast/FailStatementSyntax.cs Refactored class structure, updated constructor, and added SetPos method.
...ax/syntax/ast/IfStatementSyntax.cs Reformatted class and updated constructor/property initialization, added SetPos method.
...ax/syntax/ast/WhileStatementSyntax.cs Updated constructor/property initialization and added SetPos method.
.../expressions/TypeExpression.cs Modified constructor and added a ToString method.
runtime/ishtar.generator/GeneratorContext.cs Refined variable access within the CurrentScope object.
runtime/ishtar.generator/VeinScope.cs Added conditional logic for handling variables in scope.
...ar.generator/generators/access.cs Refactored variable access and scope resolution logic.
...ar.generator/generators/emitters.cs Improved formatting of the EmitBlock method.
...ar.generator/generators/operators.cs Added logic for handling AccessFlags.VARIABLE in EmitAssignExpression method.
runtime/ishtar.vm/Properties/launchSettings.json Updated command line arguments for the "run external_test" configuration.
runtime/ishtar.vm/VirtualMachine.cs Disposed of task scheduler, refactored exec_method, added cases in ForceFail.
.../collections/AtomicNativeDictionary.cs Modified TryGetValue to initialize value parameter to default before calling TryGet.
.../runtime/io/TaskScheduler.cs Added stop() method, debug prints in execute_scheduler, and refactored thread creation.
test/vc_test/Features/FaultFeatureTest.cs Introduced new tests for fault handling in the syntax parser.
test/vc_test/Features/WhileFeatureTest.cs Introduced new tests for while statements in Vein language parser.

Sequence Diagrams

sequenceDiagram
    participant User
    participant Compiler
    participant NewCommand

    User->>Compiler: Execute New Command
    Compiler->>NewCommand: Invoke Execute Method
    NewCommand->>NewCommand: Check if DryRun
    alt is DryRun
        NewCommand->>NewCommand: Skip Saving Files
    else not DryRun
        NewCommand->>NewCommand: Save Project Files
        NewCommand->>NewCommand: Write app.vein Content
    end
    NewCommand-->>Compiler: Completion Status
    Compiler-->>User: Operation Complete
sequenceDiagram
    participant SyntaxTree
    participant TypeExpression
    participant FailStatementSyntax
    participant IfStatementSyntax
    participant WhileStatementSyntax

    SyntaxTree->>TypeExpression: Create TypeExpression with TypeSyntax
    TypeExpression->>TypeExpression: ToString Method

    SyntaxTree->>FailStatementSyntax: Create FailStatementSyntax with ExpressionSyntax
    FailStatementSyntax->>FailStatementSyntax: SetPos Method

    SyntaxTree->>IfStatementSyntax: Create IfStatementSyntax with ExpressionSyntax, ThenStatement, ElseStatement
    IfStatementSyntax->>IfStatementSyntax: SetPos Method

    SyntaxTree->>WhileStatementSyntax: Create WhileStatementSyntax with ExpressionSyntax, StatementSyntax
    WhileStatementSyntax->>WhileStatementSyntax: SetPos Method

Poem

In the realm of code, so bright, New commands and tests take flight. Syntax bends to mark its spot, Parsing smoothly, errors not. Task Scheduler bounds in glee, Debug prints, a lively spree. Let us cheer this grand parade, Code now stronger, well displayed! 🐰✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.