@@ -185,6 +185,8 @@ class ASRJsonVisitor :
185185 public ASR::JsonBaseVisitor<ASRJsonVisitor>
186186{
187187public:
188+ bool show_intrinsic_modules;
189+
188190 using ASR::JsonBaseVisitor<ASRJsonVisitor>::JsonBaseVisitor;
189191
190192 std::string get_str () {
@@ -200,59 +202,64 @@ class ASRJsonVisitor :
200202 }
201203
202204 void visit_Module (const ASR::Module_t &x) {
203- s.append (" {" );
204- inc_indent (); s.append (" \n " + indtd);
205- s.append (" \" node\" : \" Module\" " );
206- s.append (" ,\n " + indtd);
207- s.append (" \" fields\" : {" );
208- inc_indent (); s.append (" \n " + indtd);
209- s.append (" \" name\" : " );
210- s.append (" \" " + std::string (x.m_name ) + " \" " );
211- s.append (" ,\n " + indtd);
212- s.append (" \" dependencies\" : " );
213- s.append (" [" );
214- if (x.n_dependencies > 0 ) {
205+ if (x.m_intrinsic && !show_intrinsic_modules) { // do not show intrinsic modules by default
206+ s.append (" {" );
207+ inc_indent (); s.append (" \n " + indtd);
208+ s.append (" \" node\" : \" Module\" " );
209+ s.append (" ,\n " + indtd);
210+ s.append (" \" fields\" : {" );
215211 inc_indent (); s.append (" \n " + indtd);
216- for (size_t i=0 ; i<x.n_dependencies ; i++) {
217- s.append (" \" " + std::string (x.m_dependencies [i]) + " \" " );
218- if (i < x.n_dependencies -1 ) {
219- s.append (" ,\n " + indtd);
220- };
212+ s.append (" \" name\" : " );
213+ s.append (" \" " + std::string (x.m_name ) + " \" " );
214+ s.append (" ,\n " + indtd);
215+ s.append (" \" dependencies\" : " );
216+ s.append (" [" );
217+ if (x.n_dependencies > 0 ) {
218+ inc_indent (); s.append (" \n " + indtd);
219+ for (size_t i=0 ; i<x.n_dependencies ; i++) {
220+ s.append (" \" " + std::string (x.m_dependencies [i]) + " \" " );
221+ if (i < x.n_dependencies -1 ) {
222+ s.append (" ,\n " + indtd);
223+ };
224+ }
225+ dec_indent (); s.append (" \n " + indtd);
226+ }
227+ s.append (" ]" );
228+ s.append (" ,\n " + indtd);
229+ s.append (" \" loaded_from_mod\" : " );
230+ if (x.m_loaded_from_mod ) {
231+ s.append (" true" );
232+ } else {
233+ s.append (" false" );
234+ }
235+ s.append (" ,\n " + indtd);
236+ s.append (" \" intrinsic\" : " );
237+ if (x.m_intrinsic ) {
238+ s.append (" true" );
239+ } else {
240+ s.append (" false" );
221241 }
222242 dec_indent (); s.append (" \n " + indtd);
223- }
224- s.append (" ]" );
225- s.append (" ,\n " + indtd);
226- s.append (" \" loaded_from_mod\" : " );
227- if (x.m_loaded_from_mod ) {
228- s.append (" true" );
229- } else {
230- s.append (" false" );
231- }
232- s.append (" ,\n " + indtd);
233- s.append (" \" intrinsic\" : " );
234- if (x.m_intrinsic ) {
235- s.append (" true" );
243+ s.append (" }" );
244+ s.append (" ,\n " + indtd);
245+ append_location (s, x.base .base .loc .first , x.base .base .loc .last );
246+ dec_indent (); s.append (" \n " + indtd);
247+ s.append (" }" );
236248 } else {
237- s. append ( " false " );
249+ ASR::JsonBaseVisitor<ASRJsonVisitor>:: visit_Module (x );
238250 }
239- dec_indent (); s.append (" \n " + indtd);
240- s.append (" }" );
241- s.append (" ,\n " + indtd);
242- append_location (s, x.base .base .loc .first , x.base .base .loc .last );
243- dec_indent (); s.append (" \n " + indtd);
244- s.append (" }" );
245251 }
246252};
247253
248- std::string pickle_json (ASR::asr_t &asr, LocationManager &lm) {
254+ std::string pickle_json (ASR::asr_t &asr, LocationManager &lm, bool show_intrinsic_modules ) {
249255 ASRJsonVisitor v (lm);
256+ v.show_intrinsic_modules = show_intrinsic_modules;
250257 v.visit_asr (asr);
251258 return v.get_str ();
252259}
253260
254- std::string pickle_json (ASR::TranslationUnit_t &asr, LocationManager &lm) {
255- return pickle_json ((ASR::asr_t &)asr, lm);
261+ std::string pickle_json (ASR::TranslationUnit_t &asr, LocationManager &lm, bool show_intrinsic_modules ) {
262+ return pickle_json ((ASR::asr_t &)asr, lm, show_intrinsic_modules );
256263}
257264
258265}
0 commit comments