@@ -1020,7 +1020,6 @@ impl Executor {
10201020 // Generate a instance of object
10211021 "instance" => {
10221022 let data = self . pop_stack ( ) . get_list ( ) ;
1023- let mut methods = self . pop_stack ( ) . get_list ( ) ;
10241023 let mut class = self . pop_stack ( ) . get_list ( ) ;
10251024 let mut object: HashMap < String , Type > = HashMap :: new ( ) ;
10261025
@@ -1032,18 +1031,22 @@ impl Executor {
10321031 return ;
10331032 } ;
10341033
1035- for ( name, element) in & mut class. to_owned ( ) [ 1 ..class. len ( ) ] . iter ( ) . zip ( data) {
1036- object. insert ( name. to_owned ( ) . get_string ( ) , element) ;
1037- }
1038-
1039- for item in & mut methods {
1040- let item = item. get_list ( ) ;
1041- if item. len ( ) >= 2 {
1034+ let mut index = 0 ;
1035+ for item in & mut class. to_owned ( ) [ 1 ..class. len ( ) ] . iter ( ) {
1036+ let mut item = item. to_owned ( ) ;
1037+ if item. get_list ( ) . len ( ) == 1 {
1038+ let element = & data[ index] ;
1039+ object. insert (
1040+ item. get_list ( ) [ 0 ] . to_owned ( ) . get_string ( ) ,
1041+ element. to_owned ( ) ,
1042+ ) ;
1043+ index += 1 ;
1044+ } else if item. get_list ( ) . len ( ) >= 2 {
1045+ let item = item. get_list ( ) ;
10421046 object. insert ( item[ 0 ] . clone ( ) . get_string ( ) , item[ 1 ] . clone ( ) ) ;
10431047 } else {
1044- self . log_print ( "Error! the default data structure is wrong." . to_string ( ) ) ;
1048+ self . log_print ( "Error! the class data structure is wrong." . to_string ( ) ) ;
10451049 self . stack . push ( Type :: Error ( "instance-default" . to_string ( ) ) ) ;
1046- return ;
10471050 }
10481051 }
10491052
0 commit comments