"Abstract concept instance detected" error and an import error in the sandbox
I get errors in the sandbox. (My language compiles ok).
Does anyone have an idea what am I doing wrong?
This is what I've tried:
I want my language to enable its users to use the following syntax:
for_any some_string of some_string
some_command
e.g. for_any person of students_list
and it should generate the following Java syntax:
for (int i=0; i< students_list.size(); ++i) {
}
In order to be able to display the list to the user only by its name, I've extended LinkedListType:
concept NiceList extends LinkedListType
implements INamedConcept
instance can be root: false
alias: <no alias>
short description: <no short description>
properties:
<< ... >>
children:
<< ... >>
references:
<< ... >>
And its editor definition is:
<default> editor for concept NiceList
node cell layout:
{ name }
I've created the list loop concept as:
concept ListExecute extends AbstractCommand
implements <none>
instance can be root: false
alias: list_action
short description: <no short description>
properties:
list_field_name : string
children:
body : CommandList[1]
the_list : NiceList [1]
references:
<< ... >>
And its editor:
<default> editor for concept ListExecute
node cell layout:
[- for_any { list_field_name } of ( % the_list % -> { name } ) % body % -]
And the reduction rule is in the attached file.
In the reduction rule:
the first macro is on node.the_list and the second macro is on node.body
(list_field_name field is for future use).
The language compiles ok, yet when I try to use the list_action (alias of ListExecute) in the sandbox I get the following errors:
1) Abstract concept instance detected. Use one of sub-concepts instead. Concept: Type
2) Jetbrains.mps.baseLanguage is not imported
Even though Jetbrains.mps.baseLanguage was added to the sandbox Solution Dependencies
Does anyone have an idea what am I doing wrong?
This is what I've tried:
I want my language to enable its users to use the following syntax:
for_any some_string of some_string
some_command
e.g. for_any person of students_list
and it should generate the following Java syntax:
for (int i=0; i< students_list.size(); ++i) {
}
In order to be able to display the list to the user only by its name, I've extended LinkedListType:
concept NiceList extends LinkedListType
implements INamedConcept
instance can be root: false
alias: <no alias>
short description: <no short description>
properties:
<< ... >>
children:
<< ... >>
references:
<< ... >>
And its editor definition is:
<default> editor for concept NiceList
node cell layout:
{ name }
I've created the list loop concept as:
concept ListExecute extends AbstractCommand
implements <none>
instance can be root: false
alias: list_action
short description: <no short description>
properties:
list_field_name : string
children:
body : CommandList[1]
the_list : NiceList [1]
references:
<< ... >>
And its editor:
<default> editor for concept ListExecute
node cell layout:
[- for_any { list_field_name } of ( % the_list % -> { name } ) % body % -]
And the reduction rule is in the attached file.
In the reduction rule:
the first macro is on node.the_list and the second macro is on node.body
(list_field_name field is for future use).
The language compiles ok, yet when I try to use the list_action (alias of ListExecute) in the sandbox I get the following errors:
1) Abstract concept instance detected. Use one of sub-concepts instead. Concept: Type
2) Jetbrains.mps.baseLanguage is not imported
Even though Jetbrains.mps.baseLanguage was added to the sandbox Solution Dependencies
1 comment
Sort by
Date
Votes
I'm wondering whether the_list should not be an Expression, possibly pointing to some collection, instead of being a Type. Something line the "inputSequence" in ForEachStatement.
Please sign in to leave a comment.