Skip to content

0.1.4 Release Roadmap #25

@FoxKiana

Description

@FoxKiana

0.1.4 Roadmap

Fixes

  • fix param error highlighting for macros in the search scope for what's below the comment.
  • add description before contracts in doc comment to hover doc
  • add check for completion in doc comments to stop them from happening after typing .
  • check if comment has an underlying function or macro and only try to get the function/macro if one is present
  • add hover doc for macros
  • fix default module function's doc comments not finding function param
  • fix top level code completion interfering with doc comments
  • remove param from hover doc that only exists in doc comment

Additional features

  • fully implement correct checks for missing imports
  • fully implement correct checks for missing functions and macros in module
  • optimize stdlib path lookup method - try run c3c compile --build-env to extract the Stdlib if successful
  • add hover doc for function and macro calls based on the module lookup method to guess the original function or macro [MOVED TO 0.1.5 DUE TO NEED TO REWRITE GRAMMAR FILE]
  • add stdlib path selector in project wizard
  • add banner to alert the user when the stdlib variable isn't set
  • add correct string highlighting to all contracts that support a description
  • add deprecation warning highlight on calls if function is marked as deprecated [MOVED TO 0.1.5 DUE TO NEED TO REWRITE GRAMMAR FILE]
  • make doc comment parameter names a different color/styling
  • add error highlighting on closing brace of macro- and function-bodies if missing a return statement [MOVED TO 0.1.5 DUE TO HIGH COMPLEXITY AND NEED TO REWRITE GRAMMAR FILE]
  • optimize code completion in doc comments

Necessary tests

  • this code must run properly and display all features functioning properly
/*
   highlighting and doc should also be fine in default module
*/
<*
   This comment should also appear in the hover doc

   @param list   : "the list to search"
   @param lookup : "the number to search for"
   @param error  : "this should highlight as an error since the param doesn't exist"
   @return         "true if the number could be found in the list"
*>
fn bool test_function(int[] list, int lookup)
{
    foreach (i : list)
    {
        if (i == lookup) return true;
    }

    return true;
}

<*
   This comment should also appear in the hover doc

   @param list   : "the list to search"
   @param lookup : "the number to search for"
   @param error  : "this should highlight as an error since the param doesn't exist"
   @return         "true if the number could be found in the list"
*>
macro bool test_macro(list, lookup)
{
    foreach (i : list)
    {
        if (i == lookup) return true;
    }

    return true;
}

module main;

/*
   method to run the project and check for run errors
*/
fn void main() {}

module test_missing_import;

/*
   this should highlight the call as a warning since no suitable
   import was found
*/
fn void test_missing_import()
{
    io::printn("Test");
}

module test_missing_function_in_module;

import std::io;

/*
   this should highlight the call as a warning since no suitable
   function or macro was found in the module
*/
fn void test_missing_function_in_import()
{
    io::error("Test");
}

module test_hover_doc_for_functions_and_macros;

/*
   this should display the doc comment and the contracts listed
   in the comment nicely organized on hover
*/

<*
   This comment should also appear in the hover doc

   @param list   : "the list to search"
   @param lookup : "the number to search for"
   @param error  : "this should highlight as an error since the param doesn't exist"
   @return         "true if the number could be found in the list"
*>
fn bool test_function(int[] list, int lookup)
{
    foreach (i : list)
    {
        if (i == lookup) return true;
    }

    return true;
}

<*
   This comment should also appear in the hover doc

   @param list   : "the list to search"
   @param lookup : "the number to search for"
   @param error  : "this should highlight as an error since the param doesn't exist"
   @return         "true if the number could be found in the list"
*>
macro bool test_macro(list, lookup)
{
    foreach (i : list)
    {
        if (i == lookup) return true;
    }

    return true;
}

Test checks

  • test_missing_function_in_import
  • test_missing_function_in_module
  • test_hover_doc_for_functions_and_macros
  • test_hover_doc_for_function_and_macro_calls [MOVED TO 0.1.5 DUE TO NEED TO REWRITE GRAMMAR FILE]

Other checks

  • see if path selector is present in both project wizards
  • see if the banner displays in case of c3c not being installed or not being able to locate the stdlib path
  • see if all strings in doc comments have correct highlighting
  • see if the completion in doc comments works properly and only suggests at appropriate sections/parts of the comment
  • see if the parameter names in doc comments have a unique styling

TESTED SYSTEMS

  • tested on windows
  • tested on linux
  • tested on darwin

DO NOT MERGE UNTIL ALL BOXES ARE CHECKED AND ALL TESTS HAVE BEEN MARKED AS COMPLETED, ADDITIONALLY THESE FEATURES SHOULD BE TESTED BY AT LEAST 2 PEOPLE ON 2 DIFFERENT OPERATING SYSTEMS TO ASSURE CROSS-COMPATIBILITY WITH SOME FEATURES

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions