"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
1 comment
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.
0

Please sign in to leave a comment.