4
4
import json
5
5
import logging
6
6
import os
7
- from pathlib import Path
8
7
import shutil
9
8
import subprocess
10
- from typing import TYPE_CHECKING , Dict , List , Optional , Union , Any
9
+ from pathlib import Path
10
+ from typing import TYPE_CHECKING , Any , Dict , List , Optional , Union
11
11
12
12
from crytic_compile .compilation_unit import CompilationUnit
13
13
from crytic_compile .compiler .compiler import CompilerVersion
14
14
from crytic_compile .platform .exceptions import InvalidCompilation
15
- from crytic_compile .platform .solc import Solc , get_version , is_optimized , relative_to_short
15
+ from crytic_compile .platform .solc import (
16
+ Solc ,
17
+ get_version ,
18
+ is_optimized ,
19
+ relative_to_short ,
20
+ )
16
21
from crytic_compile .platform .types import Type
17
22
from crytic_compile .utils .naming import convert_filename
18
23
@@ -160,7 +165,6 @@ def run_solc_standard_json(
160
165
" " .join (cmd ),
161
166
)
162
167
try :
163
-
164
168
with subprocess .Popen (
165
169
cmd ,
166
170
stdin = subprocess .PIPE ,
@@ -170,7 +174,6 @@ def run_solc_standard_json(
170
174
executable = shutil .which (cmd [0 ]),
171
175
** additional_kwargs ,
172
176
) as process :
173
-
174
177
stdout_b , stderr_b = process .communicate (json .dumps (solc_input ).encode ("utf-8" ))
175
178
stdout , stderr = (
176
179
stdout_b .decode (),
@@ -453,7 +456,9 @@ def compile(self, crytic_compile: "CryticCompile", **kwargs: Any) -> None:
453
456
compilation_unit .compiler_version = CompilerVersion (
454
457
compiler = "solc" ,
455
458
version = get_version (solc , solc_env ),
456
- optimized = is_optimized (solc_arguments ),
459
+ optimized = is_optimized (solc_arguments )
460
+ or self .to_dict ().get ("settings" , {}).get ("optimizer" , {}).get ("enabled" , False ),
461
+ optimize_runs = self .to_dict ().get ("settings" , {}).get ("optimizer" , {}).get ("runs" , None ),
457
462
)
458
463
459
464
add_optimization (
0 commit comments