Skip to content

Commit f893950

Browse files
committed
Update lpython.cpp and semantics APIs to use PassOptions
1 parent a895df9 commit f893950

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

src/bin/lpython.cpp

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,10 @@ int emit_asr(const std::string &infile,
165165
return 2;
166166
}
167167
LFortran::ASR::TranslationUnit_t* asr = r.result;
168-
pass_manager.apply_passes(al, asr, "f", true);
168+
LCompilers::PassOptions pass_options;
169+
pass_options.run_fun = "f";
170+
pass_options.always_run = true;
171+
pass_manager.apply_passes(al, asr, pass_options);
169172

170173
if (compiler_options.tree) {
171174
std::cout << LFortran::pickle_tree(*asr, compiler_options.use_colors,
@@ -304,33 +307,33 @@ int get_symbols (const std::string &infile,
304307
rapidjson::Document end_detail(rapidjson::kObjectType);
305308
rapidjson::Document location_object(rapidjson::kObjectType);
306309
rapidjson::Document test_capture(rapidjson::kObjectType);
307-
310+
308311
test_output.SetArray();
309-
312+
310313
for (auto symbol : symbol_lists) {
311314
uint32_t start_character = symbol.first_column;
312315
uint32_t start_line = symbol.first_line;
313316
uint32_t end_character = symbol.last_column;
314317
uint32_t end_line = symbol.last_line;
315318
std::string name = symbol.symbol_name;
316-
319+
317320
range_object.SetObject();
318321
rapidjson::Document::AllocatorType &allocator = range_object.GetAllocator();
319-
322+
320323
start_detail.SetObject();
321324
start_detail.AddMember("character", rapidjson::Value().SetInt(start_character), allocator);
322325
start_detail.AddMember("line", rapidjson::Value().SetInt(start_line), allocator);
323326
range_object.AddMember("start", start_detail, allocator);
324-
327+
325328
end_detail.SetObject();
326329
end_detail.AddMember("character", rapidjson::Value().SetInt(end_character), allocator);
327330
end_detail.AddMember("line", rapidjson::Value().SetInt(end_line), allocator);
328331
range_object.AddMember("end", end_detail, allocator);
329-
332+
330333
location_object.SetObject();
331334
location_object.AddMember("range", range_object, allocator);
332335
location_object.AddMember("uri", rapidjson::Value().SetString("uri", allocator), allocator);
333-
336+
334337
test_capture.SetObject();
335338
test_capture.AddMember("kind", rapidjson::Value().SetInt(1), allocator);
336339
test_capture.AddMember("location", location_object, allocator);
@@ -342,16 +345,16 @@ int get_symbols (const std::string &infile,
342345
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
343346
test_output.Accept(writer);
344347
std::string resp_str( buffer.GetString() );
345-
348+
346349
std::cout << resp_str;
347350
}
348351
else {
349352
std::cout << "{}\n";
350353
}
351-
354+
352355
return 0;
353356
}
354-
357+
355358

356359
int get_errors (const std::string &infile,
357360
const std::string &runtime_library_dir,
@@ -363,7 +366,7 @@ int get_errors (const std::string &infile,
363366
std::string input = LFortran::read_file(infile);
364367
lm.init_simple(input);
365368
LFortran::Result<LFortran::LPython::AST::ast_t*>
366-
r1 = LFortran::parse_python_file(al, runtime_library_dir, infile,
369+
r1 = LFortran::parse_python_file(al, runtime_library_dir, infile,
367370
diagnostics, compiler_options.new_parser);
368371
if (r1.ok) {
369372
LFortran::LPython::AST::ast_t* ast = r1.result;
@@ -396,7 +399,7 @@ int get_errors (const std::string &infile,
396399
}
397400
}
398401
rapidjson::Document range_obj(rapidjson::kObjectType);
399-
rapidjson::Document start_detail(rapidjson::kObjectType);
402+
rapidjson::Document start_detail(rapidjson::kObjectType);
400403
rapidjson::Document end_detail(rapidjson::kObjectType);
401404
rapidjson::Document diag_results(rapidjson::kArrayType);
402405
rapidjson::Document diag_capture(rapidjson::kObjectType);
@@ -411,7 +414,7 @@ int get_errors (const std::string &infile,
411414
std::string msg = diag.message;
412415

413416
range_obj.SetObject();
414-
rapidjson::Document::AllocatorType &allocator = range_obj.GetAllocator();
417+
rapidjson::Document::AllocatorType &allocator = range_obj.GetAllocator();
415418

416419
start_detail.SetObject();
417420
start_detail.AddMember("line", rapidjson::Value().SetInt(start_line), allocator);

src/lpython/semantics/python_ast_to_asr.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4557,7 +4557,10 @@ Result<ASR::TranslationUnit_t*> python_ast_to_asr(Allocator &al,
45574557
LFORTRAN_ASSERT(asr_verify(*tu));
45584558
}
45594559
} else {
4560-
pass_wrap_global_stmts_into_program(al, *tu, "_lpython_main_program");
4560+
LCompilers::PassOptions pass_options;
4561+
pass_options.run_fun = "_lpython_main_program";
4562+
pass_options.runtime_library_dir = get_runtime_library_dir();
4563+
pass_wrap_global_stmts_into_program(al, *tu, pass_options);
45614564
LFORTRAN_ASSERT(asr_verify(*tu));
45624565
}
45634566
}

0 commit comments

Comments
 (0)