8
8
from typing import TYPE_CHECKING
9
9
10
10
from pyk .kdist import kdist
11
+ from pyk .ktool import TypeInferenceMode
11
12
from pyk .ktool .kompile import HaskellKompile , KompileArgs , LLVMKompile , LLVMKompileType , MaudeKompile
12
13
from pyk .utils import run_process
13
14
@@ -61,6 +62,7 @@ def kevm_kompile(
61
62
debug_build : bool = False ,
62
63
debug : bool = False ,
63
64
verbose : bool = False ,
65
+ type_inference_mode : str | TypeInferenceMode | None = None ,
64
66
) -> Path :
65
67
if plugin_dir is None :
66
68
plugin_dir = kdist .get ('evm-semantics.plugin' )
@@ -83,6 +85,7 @@ def kevm_kompile(
83
85
debug_build = debug_build ,
84
86
debug = debug ,
85
87
verbose = verbose ,
88
+ type_inference_mode = type_inference_mode ,
86
89
)
87
90
88
91
@@ -104,10 +107,14 @@ def run_kompile(
104
107
debug_build : bool = False ,
105
108
debug : bool = False ,
106
109
verbose : bool = False ,
110
+ type_inference_mode : str | TypeInferenceMode | None = None ,
107
111
) -> Path :
108
112
if llvm_library is None :
109
113
llvm_library = output_dir / 'llvm-library'
110
114
115
+ if type_inference_mode is None :
116
+ type_inference_mode = TypeInferenceMode .SIMPLESUB
117
+
111
118
include_dirs = [Path (include ) for include in includes ]
112
119
include_dirs += config .INCLUDE_DIRS
113
120
@@ -136,7 +143,9 @@ def run_kompile(
136
143
llvm_kompile_type = llvm_kompile_type ,
137
144
enable_llvm_debug = enable_llvm_debug ,
138
145
)
139
- return kompile (output_dir = output_dir , debug = debug , verbose = verbose )
146
+ return kompile (
147
+ output_dir = output_dir , debug = debug , verbose = verbose , type_inference_mode = type_inference_mode
148
+ )
140
149
141
150
case KompileTarget .MAUDE :
142
151
kompile_maude = MaudeKompile (
@@ -147,10 +156,14 @@ def run_kompile(
147
156
maude_dir = output_dir / 'kompiled-maude'
148
157
149
158
def _kompile_maude () -> None :
150
- kompile_maude (output_dir = maude_dir , debug = debug , verbose = verbose )
159
+ kompile_maude (
160
+ output_dir = maude_dir , debug = debug , verbose = verbose , type_inference_mode = type_inference_mode
161
+ )
151
162
152
163
def _kompile_haskell () -> None :
153
- kompile_haskell (output_dir = output_dir , debug = debug , verbose = verbose )
164
+ kompile_haskell (
165
+ output_dir = output_dir , debug = debug , verbose = verbose , type_inference_mode = type_inference_mode
166
+ )
154
167
155
168
with concurrent .futures .ThreadPoolExecutor (max_workers = 2 ) as executor :
156
169
futures = [
@@ -178,10 +191,14 @@ def _kompile_haskell() -> None:
178
191
kompile_haskell = HaskellKompile (base_args = base_args , haskell_binary = haskell_binary )
179
192
180
193
def _kompile_llvm () -> None :
181
- kompile_llvm (output_dir = llvm_library , debug = debug , verbose = verbose )
194
+ kompile_llvm (
195
+ output_dir = llvm_library , debug = debug , verbose = verbose , type_inference_mode = type_inference_mode
196
+ )
182
197
183
198
def _kompile_haskell () -> None :
184
- kompile_haskell (output_dir = output_dir , debug = debug , verbose = verbose )
199
+ kompile_haskell (
200
+ output_dir = output_dir , debug = debug , verbose = verbose , type_inference_mode = type_inference_mode
201
+ )
185
202
186
203
with concurrent .futures .ThreadPoolExecutor (max_workers = 2 ) as executor :
187
204
futures = [
0 commit comments