@@ -733,7 +733,12 @@ TextFragment ParseTextFragmentJSON(const llvm::json::Object &obj) {
733733}
734734
735735GenericFragment ParseGenericFragmentJSON (const llvm::json::Object &obj) {
736- return {obj.getString (" generic" )->str ()};
736+ auto s = obj.getString (" generic" );
737+ if (s->size () < 2 || s->front () != ' T' ) {
738+ llvm::errs () << " Invalid generic fragment: " << s << ' \n ' ;
739+ assert (0 );
740+ }
741+ return {(unsigned )std::atoi (s->data () + 1 )};
737742}
738743
739744TypeInfo ParseTypeInfoJSON (const llvm::json::Object &obj) {
@@ -767,7 +772,11 @@ ParsePlaceholderFragmentJSON(const llvm::json::Object &obj) {
767772 auto arg = obj.getString (" arg" );
768773 auto access = obj.getString (" access" );
769774 assert (arg && access);
770- return {arg->str (), ParseAccessJSON (*access)};
775+ if (arg->size () < 2 || arg->front () != ' a' ) {
776+ llvm::errs () << " Invalid arg fragment: " << arg << ' \n ' ;
777+ assert (0 );
778+ }
779+ return {(unsigned )atoi (arg->data () + 1 ), ParseAccessJSON (*access)};
771780}
772781
773782std::vector<BodyFragment> ParseBodyFragmentsJSON (const llvm::json::Array &arr);
@@ -938,7 +947,7 @@ void TextFragment::dump() const {
938947}
939948
940949void PlaceholderFragment::dump () const {
941- llvm::errs () << " placeholder: " << arg << " (" ;
950+ llvm::errs () << " placeholder: " << n << " (" ;
942951 switch (access) {
943952 case Access::kRead :
944953 llvm::errs () << " read\n " ;
@@ -997,7 +1006,7 @@ void ExprTgt::dump() const {
9971006}
9981007
9991008void GenericFragment::dump () const {
1000- llvm::errs () << " generic: " << name << ' \n ' ;
1009+ llvm::errs () << " generic: " << n << ' \n ' ;
10011010}
10021011
10031012void TypeInfo::dump () const {
0 commit comments