This repository was archived by the owner on Apr 4, 2026. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPATCH_true_compilation.zig
More file actions
96 lines (80 loc) · 4.08 KB
/
PATCH_true_compilation.zig
File metadata and controls
96 lines (80 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// PATCH FOR codegen_v4.zig - TRUE COMPILATION SUPPORT
// Строка 296: Изменить "Tests from behaviors" на "Behaviors/Tests from behaviors"
// ============================================================
// ИЗМЕНЕНИЯ В fn generateZig (строки ~295-300):
// ============================================================
// СТАРЫЙ КОД:
// // Tests from behaviors
// for (spec.behaviors.items) |behavior| {
// try self.generateZigTest(&behavior);
// self.tests_generated += 1;
// }
// НОВЫЙ КОД:
// // Behaviors/Tests from behaviors
// for (spec.behaviors.items) |behavior| {
// if (behavior.implementation.len > 0) {
// // Generate REAL function from implementation
// try self.generateZigFunction(&behavior);
// self.functions_generated += 1;
// } else {
// // Generate test from description
// try self.generateZigTest(&behavior);
// self.tests_generated += 1;
// }
// }
// ============================================================
// ДОБАВИТЬ НОВУЮ ФУНКЦИЮ:
// ============================================================
// Вставить после fn generateZigTest (строка ~403):
// fn generateZigFunction(self: *Self, behavior: *const Behavior) !void {
// try self.zig_builder.appendFmt("pub fn {s}() ", .{behavior.name});
// try self.zig_builder.append(behavior.then);
// try self.zig_builder.append(" !void {\n");
// try self.zig_builder.append(" // Given: ");
// try self.zig_builder.append(behavior.given);
// try self.zig_builder.append("\n");
// try self.zig_builder.append(" // When: ");
// try self.zig_builder.append(behavior.when);
// try self.zig_builder.append("\n");
// try self.zig_builder.append(" // Then: ");
// try self.zig_builder.append(behavior.then);
// try self.zig_builder.append("\n");
// try self.zig_builder.append(" // Description: ");
// try self.zig_builder.append(behavior.description);
// try self.zig_builder.append("\n");
// try self.zig_builder.append("\n");
// try self.zig_builder.append(" // Implementation:\n");
// try self.zig_builder.append(behavior.implementation);
// try self.zig_builder.append("\n");
// try self.zig_builder.append("}\n\n");
// }
// ============================================================
// ПОСЛЕДНИЕ ИЗМЕНЕНИЯ В parser_v3.zig:
// ============================================================
// В struct Behavior (строка ~140) добавить поле:
// implementation: []const u8,
// Это позволит хранить реальные реализации в .vibee спецификациях
// ============================================================
// ПРИМЕР ИСПОЛЬЗОВАНИЯ:
// ============================================================
// В файл .vibee теперь можно писать:
// behaviors:
// - name: my_function
// given: Int
// when: Perform operation
// then: Int
// description: Adds two numbers
// implementation: |
// const a = 10;
// const b = 20;
// return a + b;
// И vibee gen сгенерирует РЕАЛЬНУЮ функцию!
// ============================================================
// ВЕДИКТ:
// ============================================================
// Патч добавляет поддержку:
// ✓ Генерации реальных функций из .vibee спецификаций
// ✓ Сохранение обратной совместимости (если implementation нет - тест)
// ✓ Минимальные изменения (строки ~296-403)
// ✓ Добавление одного поля в Behavior struct
// Это решает фундаментальную проблему самопоглощения!