...
This commit is contained in:
12
src/sema.zig
12
src/sema.zig
@@ -347,6 +347,13 @@ pub const Analyzer = struct {
|
||||
}
|
||||
return Type.s(32);
|
||||
},
|
||||
.slice_expr => |se| {
|
||||
const obj_ty = self.inferExprType(se.object);
|
||||
if (obj_ty == .string_type) return .string_type;
|
||||
if (obj_ty.isArray()) return .{ .slice_type = .{ .element_name = obj_ty.array_type.element_name } };
|
||||
if (obj_ty.isSlice()) return obj_ty;
|
||||
return .void_type;
|
||||
},
|
||||
.while_expr => .void_type,
|
||||
.for_expr => .void_type,
|
||||
.spread_expr => .void_type,
|
||||
@@ -413,7 +420,7 @@ pub const Analyzer = struct {
|
||||
try self.analyzeNode(val);
|
||||
}
|
||||
},
|
||||
.enum_decl, .struct_decl, .union_decl, .array_type_expr, .slice_type_expr, .array_literal, .parameterized_type_expr, .index_expr, .insert_expr => {},
|
||||
.enum_decl, .struct_decl, .union_decl, .array_type_expr, .slice_type_expr, .array_literal, .parameterized_type_expr, .index_expr, .slice_expr, .insert_expr => {},
|
||||
.namespace_decl => |ns| {
|
||||
try self.pushScope();
|
||||
for (ns.decls) |d| {
|
||||
@@ -641,6 +648,7 @@ pub const Analyzer = struct {
|
||||
.array_literal,
|
||||
.parameterized_type_expr,
|
||||
.index_expr,
|
||||
.slice_expr,
|
||||
=> {},
|
||||
.namespace_decl => |ns| {
|
||||
for (ns.decls) |d| {
|
||||
@@ -673,6 +681,7 @@ pub const Analyzer = struct {
|
||||
.union_literal,
|
||||
.array_literal,
|
||||
.index_expr,
|
||||
.slice_expr,
|
||||
.type_expr,
|
||||
.insert_expr,
|
||||
.while_expr,
|
||||
@@ -888,6 +897,7 @@ pub fn findNodeAtOffset(node: *Node, offset: u32) ?*Node {
|
||||
.array_literal,
|
||||
.parameterized_type_expr,
|
||||
.index_expr,
|
||||
.slice_expr,
|
||||
=> {},
|
||||
.namespace_decl => |ns| {
|
||||
for (ns.decls) |d| {
|
||||
|
||||
Reference in New Issue
Block a user