mt-lang 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/milk_tea/base.rb +1 -1
- data/lib/milk_tea/core/c_backend/expressions.rb +6 -1
- data/lib/milk_tea/core/c_backend/feature_detection.rb +27 -55
- data/lib/milk_tea/core/c_backend/format_helpers.rb +551 -0
- data/lib/milk_tea/core/c_backend/runtime_helpers.rb +0 -542
- data/lib/milk_tea/core/c_backend/statements.rb +4 -0
- data/lib/milk_tea/core/c_backend/type_collectors.rb +51 -204
- data/lib/milk_tea/core/c_backend.rb +10 -0
- data/lib/milk_tea/core/compatibility_helpers.rb +1 -1
- data/lib/milk_tea/core/compile_time.rb +19 -1
- data/lib/milk_tea/core/ir.rb +3 -1
- data/lib/milk_tea/core/lowering/async/lowering.rb +147 -141
- data/lib/milk_tea/core/lowering/block.rb +761 -726
- data/lib/milk_tea/core/lowering/declarations.rb +2 -1
- data/lib/milk_tea/core/lowering/expressions.rb +94 -0
- data/lib/milk_tea/core/lowering/loops.rb +49 -0
- data/lib/milk_tea/core/lowering/resolve.rb +222 -215
- data/lib/milk_tea/core/lowering/utils.rb +0 -222
- data/lib/milk_tea/core/module_loader.rb +29 -48
- data/lib/milk_tea/core/parser/declarations.rb +2 -2
- data/lib/milk_tea/core/parser/recovery.rb +1 -1
- data/lib/milk_tea/core/parser.rb +1 -1
- data/lib/milk_tea/core/semantic_analyzer/expressions.rb +3 -120
- data/lib/milk_tea/core/semantic_analyzer/foreign_functions.rb +116 -113
- data/lib/milk_tea/core/semantic_analyzer/generics.rb +346 -343
- data/lib/milk_tea/core/semantic_analyzer/statements.rb +37 -12
- data/lib/milk_tea/core/semantic_analyzer/top_level.rb +23 -0
- data/lib/milk_tea/core/types/predicates.rb +501 -499
- data/lib/milk_tea/core/types/visitor.rb +1 -1
- data/lib/milk_tea/tooling/error_formatter.rb +18 -14
- data/std/mem/ptr.mt +9 -0
- metadata +3 -2
|
@@ -16,19 +16,11 @@ module MilkTea
|
|
|
16
16
|
severity = error.respond_to?(:severity) ? error.severity : :error
|
|
17
17
|
code = error.respond_to?(:code) ? error.code : nil
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
source_lines = source.split("\n", -1)
|
|
23
|
-
source_line = source_lines[line - 1] || ""
|
|
24
|
-
stripped = source_line.gsub(/\t/, " ")
|
|
19
|
+
# Strip location suffix from message (errors embed "at path:line:col" in message text)
|
|
20
|
+
location_suffix = " at #{path}:#{line}:#{column}"
|
|
21
|
+
error_message = error_message.delete_suffix(location_suffix).strip
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
highlight = if length && length > 1
|
|
28
|
-
"^" + "~" * (length - 1)
|
|
29
|
-
else
|
|
30
|
-
"^"
|
|
31
|
-
end
|
|
23
|
+
source ||= read_source(path)
|
|
32
24
|
|
|
33
25
|
bold = color ? "\e[1m" : ""
|
|
34
26
|
red = color ? "\e[31m" : ""
|
|
@@ -46,9 +38,21 @@ module MilkTea
|
|
|
46
38
|
|
|
47
39
|
code_text = code ? "#{cyan}[#{code}]#{reset}" : ""
|
|
48
40
|
|
|
41
|
+
return "#{sev_color}#{sev_text}#{code_text}#{reset}: #{error_message} -- #{path}:#{line}:#{column}" unless source
|
|
42
|
+
|
|
43
|
+
source_lines = source.split("\n", -1)
|
|
44
|
+
source_line = source_lines[line - 1] || ""
|
|
45
|
+
stripped = source_line.gsub(/\t/, " ")
|
|
46
|
+
|
|
47
|
+
indent = " " * [column - 1, 0].max
|
|
48
|
+
highlight = if length && length > 1
|
|
49
|
+
"^" + "~" * (length - 1)
|
|
50
|
+
else
|
|
51
|
+
"^"
|
|
52
|
+
end
|
|
53
|
+
|
|
49
54
|
[
|
|
50
|
-
"#{
|
|
51
|
-
" #{bold}-->#{reset} #{path}:#{line}:#{column}",
|
|
55
|
+
"#{sev_color}#{sev_text}#{code_text}#{reset}: #{error_message} -- #{path}:#{line}:#{column}",
|
|
52
56
|
" #{bold}|#{reset}",
|
|
53
57
|
"#{line.to_s.rjust(5)} #{bold}|#{reset} #{stripped}",
|
|
54
58
|
" #{bold}|#{reset} #{sev_color}#{indent}#{highlight}#{reset}",
|
data/std/mem/ptr.mt
CHANGED
|
@@ -10,3 +10,12 @@ extending ptr[T]:
|
|
|
10
10
|
|
|
11
11
|
public function store(value: T) -> void:
|
|
12
12
|
unsafe: read(this) = value
|
|
13
|
+
|
|
14
|
+
public function load_at(offset: ptr_uint) -> T:
|
|
15
|
+
return unsafe: read(this + offset)
|
|
16
|
+
|
|
17
|
+
public function store_at(offset: ptr_uint, value: T) -> void:
|
|
18
|
+
unsafe: read(this + offset) = value
|
|
19
|
+
|
|
20
|
+
public function cast[U]() -> ptr[U]:
|
|
21
|
+
return unsafe: ptr[U]<-this
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mt-lang
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Long (Teefan) Tran
|
|
@@ -195,6 +195,7 @@ files:
|
|
|
195
195
|
- lib/milk_tea/core/c_backend/control_flow_emission.rb
|
|
196
196
|
- lib/milk_tea/core/c_backend/expressions.rb
|
|
197
197
|
- lib/milk_tea/core/c_backend/feature_detection.rb
|
|
198
|
+
- lib/milk_tea/core/c_backend/format_helpers.rb
|
|
198
199
|
- lib/milk_tea/core/c_backend/reachability.rb
|
|
199
200
|
- lib/milk_tea/core/c_backend/reinterpret.rb
|
|
200
201
|
- lib/milk_tea/core/c_backend/runtime_helpers.rb
|
|
@@ -601,7 +602,7 @@ metadata:
|
|
|
601
602
|
homepage_uri: https://teefan.github.io/mt-lang/
|
|
602
603
|
source_code_uri: https://github.com/teefan/mt-lang
|
|
603
604
|
post_install_message: |
|
|
604
|
-
Milk Tea 0.3.
|
|
605
|
+
Milk Tea 0.3.6 installed!
|
|
605
606
|
|
|
606
607
|
System requirements:
|
|
607
608
|
- A C compiler (gcc or clang) must be available on PATH
|