@@ -197,16 +197,7 @@ jik_semantic_reject_invalid_value_expr(JikNode *nd)
197197 nd -> val_variant_new .name -> val_id .module_id ,
198198 nd -> token -> module_id );
199199 if (variant && variant -> type == NODE_VARIANT &&
200- jik_variant_tag_is_payloadless (variant , nd -> val_variant_new .tag )) {
201- jik_diag_fatal_error_if (nd -> val_variant_new .has_initializer_syntax ,
202- "payloadless variant tag cannot use braces" ,
203- JIK_STRING_NCAT ("use " ,
204- nd -> val_variant_new .name -> val_id .name ,
205- "." ,
206- nd -> val_variant_new .tag ));
207- }
208- else if (variant && variant -> type == NODE_VARIANT &&
209- !nd -> val_variant_new .has_initializer_syntax ) {
200+ !nd -> val_variant_new .has_initializer_syntax ) {
210201 jik_diag_fatal_error (JIK_STRING_NCAT ("variant tag cannot be used as a value; use " ,
211202 nd -> val_variant_new .name -> val_id .name ,
212203 "." ,
@@ -681,33 +672,6 @@ jik_semantic_resolve_symbols(JikSemanticAnalyzer *sa)
681672 * member = * tag ;
682673 }
683674 }
684- else if (nd -> type == NODE_EXPR_SUBSCRIPT_GET &&
685- nd -> val_subscript_get .node -> type == NODE_EXPR_MEMBER_ACCESS &&
686- nd -> val_subscript_get .node -> val_member_access .node -> type ==
687- NODE_EXPR_IDENTIFIER &&
688- nd -> val_subscript_get .expr -> type == NODE_EXPR_IDENTIFIER ) {
689- JikNode * member = nd -> val_subscript_get .node ;
690- JikNode * variant = jik_scope_get_symbol (
691- nd -> context ,
692- member -> val_member_access .node -> val_id .name ,
693- member -> val_member_access .node -> val_id .module_id ,
694- nd -> token -> module_id );
695- if (variant && variant -> type == NODE_VARIANT &&
696- jik_variant_tag_is_payloadless (variant , member -> val_member_access .member_name )) {
697- JikNode * ret = jik_node_new_variant_new (member -> val_member_access .node ,
698- NULL ,
699- member -> val_member_access .member_name ,
700- nd -> context ,
701- nd -> token );
702- ret -> val_variant_new .name -> val_id .module_id = variant -> token -> module_id ;
703- jik_set_alloc_spec (ret ,
704- (JikAllocSpec ){.kind = JIK_ALLOC_NAMED_REGION ,
705- .src = JIK_ALLOC_SRC_UNKNOWN ,
706- .region_name =
707- nd -> val_subscript_get .expr -> val_id .name });
708- * nd = * ret ;
709- }
710- }
711675 else if (nd -> type == NODE_EXPR_MEMBER_ACCESS ) {
712676 if (nd -> val_member_access .node -> type == NODE_EXPR_IDENTIFIER ) {
713677 char * module_id = nd -> val_member_access .node -> val_id .module_id
@@ -729,31 +693,15 @@ jik_semantic_resolve_symbols(JikSemanticAnalyzer *sa)
729693 jik_token_to_text (nd -> token ));
730694 }
731695 else if (enum_node && enum_node -> type == NODE_VARIANT ) {
732- if (jik_variant_tag_is_payloadless (enum_node ,
733- nd -> val_member_access .member_name )) {
734- JikNode * var_new_nd = jik_node_new_variant_new (
735- nd -> val_member_access .node ,
736- NULL ,
737- nd -> val_member_access .member_name ,
738- nd -> context ,
739- nd -> token );
740- var_new_nd -> val_variant_new .name -> val_id .module_id = module_id ;
741- jik_set_alloc_spec (var_new_nd ,
742- (JikAllocSpec ){.kind = JIK_ALLOC_LOCAL ,
743- .src = JIK_ALLOC_SRC_LOCAL });
744- * nd = * var_new_nd ;
745- }
746- else {
747- JikNode * var_new_nd =
748- jik_node_new_variant_tag (nd -> val_member_access .node ,
749- nd -> val_member_access .member_name ,
750- nd -> context ,
751- nd -> token );
752- nd -> type = var_new_nd -> type ;
753- nd -> jik_type = var_new_nd -> jik_type ;
754- nd -> val_variant_tag .name = var_new_nd -> val_variant_tag .name ;
755- nd -> val_variant_tag .tag = var_new_nd -> val_variant_tag .tag ;
756- }
696+ JikNode * var_new_nd =
697+ jik_node_new_variant_tag (nd -> val_member_access .node ,
698+ nd -> val_member_access .member_name ,
699+ nd -> context ,
700+ nd -> token );
701+ nd -> type = var_new_nd -> type ;
702+ nd -> jik_type = var_new_nd -> jik_type ;
703+ nd -> val_variant_tag .name = var_new_nd -> val_variant_tag .name ;
704+ nd -> val_variant_tag .tag = var_new_nd -> val_variant_tag .tag ;
757705 }
758706 }
759707 }
0 commit comments