Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Name resolution (and new tool, mh_lint) #149

Open
3 of 9 tasks
florianschanda opened this issue Jul 27, 2020 · 0 comments
Open
3 of 9 tasks

Name resolution (and new tool, mh_lint) #149

florianschanda opened this issue Jul 27, 2020 · 0 comments
Assignees
Labels
component: core Affects the core infrastructure component: sem Affects semantic analysis difficulty: extreme This change requires significant language/algorithm/architecture design tool: mh_lint Affects the linter

Comments

@florianschanda
Copy link
Owner

florianschanda commented Jul 27, 2020

Requires: #140

  • find a sane way to deal with toolbox/builtins; ideally by being able to look at the installed MATLAB
  • new module m_sem, which is invoked after parsing
  • decide on a strategy on when to invoke it, especially if no project is configured
  • create new entry point (mh_lint) and documentation

Elements to resolve:

  • classes (including separates), their methods and enumerations
  • functions
  • scope
  • local variables
  • globals and persistents

Types (or their lack thereof) are out of scope.

@florianschanda florianschanda added component: sem Affects semantic analysis component: core Affects the core infrastructure tool: mh_lint Affects the linter labels Jul 27, 2020
florianschanda added a commit that referenced this issue Aug 1, 2020
This tool will be licensed under the AGPL.
florianschanda added a commit that referenced this issue Aug 2, 2020
@florianschanda florianschanda added the difficulty: high This change will be tricky or large label Aug 2, 2020
@florianschanda florianschanda added this to the release-0.9.15 milestone Nov 20, 2020
@florianschanda florianschanda self-assigned this Dec 9, 2020
florianschanda added a commit that referenced this issue Dec 18, 2020
* Add entities, for now just classdefs
* Add skeleton code in mh_lint to build a symbol table

Nothing really works yet, as I need to find a sane way to deal
with packages.
florianschanda added a commit that referenced this issue Dec 21, 2020
Also add infrastructure to run these tests.
florianschanda added a commit that referenced this issue Dec 21, 2020
Private directories are quite restricted:
* You can only have functions defined
* Not classes
* And also no further packages

So, packages and classes always have global visibility.

Visibility for functions in private directories are also strict:
only items specifically in that directory have visibility.

Items that are logically there (like functions in identically
named packages, or classes in @ directories) do not, since they
are not literally in that directory.
florianschanda added a commit that referenced this issue Dec 24, 2020
Private in class (allowed and works), and class in class (does
not work).
florianschanda added a commit that referenced this issue Jan 11, 2021
WIP from xmas vacation; is not really working yet. Specifically
the way we deal with packages needs to change again.
florianschanda added a commit that referenced this issue Jan 11, 2021
We'll stitch it toger in the main loop
@florianschanda florianschanda added difficulty: extreme This change requires significant language/algorithm/architecture design and removed difficulty: high This change will be tricky or large labels Jan 25, 2021
@florianschanda florianschanda removed this from the release-0.9.16 milestone Mar 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: core Affects the core infrastructure component: sem Affects semantic analysis difficulty: extreme This change requires significant language/algorithm/architecture design tool: mh_lint Affects the linter
Projects
None yet
Development

No branches or pull requests

1 participant