Fix semantic token generation for container fields with a byte alignment
This commit is contained in:
		
							parent
							
								
									14dc9d1b51
								
							
						
					
					
						commit
						5631b8d202
					
				@ -1017,20 +1017,20 @@ fn writeContainerField(
 | 
				
			|||||||
    if (field_token_type) |tok_type| try writeToken(builder, container_field.ast.name_token, tok_type);
 | 
					    if (field_token_type) |tok_type| try writeToken(builder, container_field.ast.name_token, tok_type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (container_field.ast.type_expr != 0) {
 | 
					    if (container_field.ast.type_expr != 0) {
 | 
				
			||||||
 | 
					        try await @asyncCall(child_frame, {}, writeNodeTokens, .{ builder, arena, store, container_field.ast.type_expr });
 | 
				
			||||||
        if (container_field.ast.align_expr != 0) {
 | 
					        if (container_field.ast.align_expr != 0) {
 | 
				
			||||||
            try writeToken(builder, tree.firstToken(container_field.ast.align_expr) - 2, .keyword);
 | 
					            try writeToken(builder, tree.firstToken(container_field.ast.align_expr) - 2, .keyword);
 | 
				
			||||||
            try await @asyncCall(child_frame, {}, writeNodeTokens, .{ builder, arena, store, container_field.ast.align_expr });
 | 
					            try await @asyncCall(child_frame, {}, writeNodeTokens, .{ builder, arena, store, container_field.ast.align_expr });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        try await @asyncCall(child_frame, {}, writeNodeTokens, .{ builder, arena, store, container_field.ast.type_expr });
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (container_field.ast.value_expr != 0) block: {
 | 
					    if (container_field.ast.value_expr != 0) block: {
 | 
				
			||||||
        const eq_tok: ast.TokenIndex = if (container_field.ast.type_expr != 0)
 | 
					        const eq_tok: ast.TokenIndex = if (container_field.ast.align_expr != 0)
 | 
				
			||||||
 | 
					            lastToken(tree, container_field.ast.align_expr) + 2
 | 
				
			||||||
 | 
					        else if (container_field.ast.type_expr != 0)
 | 
				
			||||||
            lastToken(tree, container_field.ast.type_expr) + 1
 | 
					            lastToken(tree, container_field.ast.type_expr) + 1
 | 
				
			||||||
        else if (container_field.ast.align_expr != 0)
 | 
					 | 
				
			||||||
            lastToken(tree, container_field.ast.align_expr) + 1
 | 
					 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            break :block; // Check this, I believe it is correct.
 | 
					            break :block;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try writeToken(builder, eq_tok, .operator);
 | 
					        try writeToken(builder, eq_tok, .operator);
 | 
				
			||||||
        try await @asyncCall(child_frame, {}, writeNodeTokens, .{ builder, arena, store, container_field.ast.value_expr });
 | 
					        try await @asyncCall(child_frame, {}, writeNodeTokens, .{ builder, arena, store, container_field.ast.value_expr });
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user