bugfix: vscode quote handling; added: type info methods
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 6 Jun 2023 02:59:18 +0000 (21:59 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 6 Jun 2023 02:59:18 +0000 (21:59 -0500)
compiler/include/astnodes.h
compiler/src/astnodes.c
compiler/src/types.c
misc/vscode/onyx-0.1.7.vsix
misc/vscode/syntaxes/onyx.tmLanguage

index e145347128b7745932944d1aea1be75ad30f0c74..e26ef4541cca54c66b6f3a56543ff8836ede2dad 100644 (file)
@@ -2102,6 +2102,7 @@ static inline b32 node_is_addressable_literal(AstNode* node) {
 static inline Type* get_expression_type(AstTyped* expr) {
     switch (expr->kind) {
         case Ast_Kind_Block: case Ast_Kind_If: case Ast_Kind_While: return NULL;
+        case Ast_Kind_Typeof: return &basic_types[Basic_Kind_Type_Index];
         default: return expr->type;
     }
 }
index b832ea85cd6c9e53023ff5a69383da1d971bcd22..12e83ff709d70c126b77f9f72fa0cacfdd367cce 100644 (file)
@@ -1700,8 +1700,6 @@ void arguments_clear_baked_flags(Arguments* args) {
 
 // GROSS: Using void* to avoid having to cast everything.
 const char* node_get_type_name(void* node) {
-    if (node_is_type((AstNode *) node)) return "type_expr";
-
     if (((AstNode *) node)->kind == Ast_Kind_Argument) {
         return node_get_type_name(((AstArgument *) node)->value);
     }
index 1121b7a3b3e092511cbfbdd69cb30ed0a8789e0b..027483bb88a07a6d95244b2115353877c5f1a5a1 100644 (file)
@@ -36,7 +36,7 @@ Type basic_types[] = {
     { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_f64x2, { Basic_Kind_F64X2,  Basic_Flag_SIMD,                        16, 16, "f64x2" } },
     { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_v128,  { Basic_Kind_V128,   Basic_Flag_SIMD,                        16, 16, "v128"  } },
 
-    { Type_Kind_Basic, 0, 0, NULL,                          { Basic_Kind_Type_Index, Basic_Flag_Type_Index,              4,  4, "type_expr" } },
+    { Type_Kind_Basic, 0, 0, (AstType *) &basic_type_type_expr, { Basic_Kind_Type_Index, Basic_Flag_Type_Index,          4,  4, "type_expr" } },
 };
 
 // TODO: Document this!!
index 23c7ddf368d5b963411e5086dc00733c42df1319..173a151e733ffd550ddf2bdc0dd04cb590b270f5 100644 (file)
Binary files a/misc/vscode/onyx-0.1.7.vsix and b/misc/vscode/onyx-0.1.7.vsix differ
index 42107e2365f6104100456093747ede5d1501184d..221f8dcb0f25234fa1dcefba923dc3c6447d136a 100644 (file)
                        <array>
                                <dict>
                                        <key>match</key>
-                                       <string>\\(\\|[abefnrut"0]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|[0-7]{3})</string>
+                                       <string>\\(\\|[abefnrut'"0]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|[0-7]{3})</string>
                                        <key>name</key>
                                        <string>constant.character.escape.onyx</string>
                                </dict>
                                                </dict>
                                        </array>
                                </dict>
+                               <dict>
+                                       <key>begin</key>
+                                       <string>'</string>
+                                       <key>beginCaptures</key>
+                                       <dict>
+                                               <key>0</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>punctuation.definition.string.begin.onyx</string>
+                                               </dict>
+                                       </dict>
+                                       <key>end</key>
+                                       <string>'</string>
+                                       <key>endCaptures</key>
+                                       <dict>
+                                               <key>0</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>punctuation.definition.string.end.onyx</string>
+                                               </dict>
+                                       </dict>
+                                       <key>name</key>
+                                       <string>string.quoted.double.onyx</string>
+                                       <key>patterns</key>
+                                       <array>
+                                               <dict>
+                                                       <key>include</key>
+                                                       <string>#string_escaped_char</string>
+                                               </dict>
+                                       </array>
+                               </dict>
                        </array>
                </dict>