Bladeren bron

LibRegex+LibJS: Change capture group names from a String to a FlyString

The parser now stores this as a FlyString everywhere, so consumers can
also use it as a FlyString.
Timothy Flynn 4 jaren geleden
bovenliggende
commit
c5b5c779ff
2 gewijzigde bestanden met toevoegingen van 4 en 4 verwijderingen
  1. 3 3
      Userland/Libraries/LibJS/Runtime/RegExpPrototype.cpp
  2. 1 1
      Userland/Libraries/LibRegex/RegexMatch.h

+ 3 - 3
Userland/Libraries/LibJS/Runtime/RegExpPrototype.cpp

@@ -141,7 +141,7 @@ static Value get_match_indices_array(GlobalObject& global_object, Utf16View cons
 }
 
 // 1.1.4.1.5 MakeIndicesArray ( S , indices, groupNames, hasGroups ), https://tc39.es/proposal-regexp-match-indices/#sec-makeindicesarray
-static Value make_indices_array(GlobalObject& global_object, Utf16View const& string, Vector<Optional<Match>> const& indices, HashMap<String, Match> const& group_names, bool has_groups)
+static Value make_indices_array(GlobalObject& global_object, Utf16View const& string, Vector<Optional<Match>> const& indices, HashMap<FlyString, Match> const& group_names, bool has_groups)
 {
     // Note: This implementation differs from the spec, but has the same behavior.
     //
@@ -268,7 +268,7 @@ static Value regexp_builtin_exec(GlobalObject& global_object, RegExpObject& rege
         return {};
 
     Vector<Optional<Match>> indices { Match::create(match) };
-    HashMap<String, Match> group_names;
+    HashMap<FlyString, Match> group_names;
 
     bool has_groups = result.n_named_capture_groups != 0;
     Object* groups_object = has_groups ? Object::create(global_object, nullptr) : nullptr;
@@ -285,7 +285,7 @@ static Value regexp_builtin_exec(GlobalObject& global_object, RegExpObject& rege
         array->create_data_property_or_throw(i + 1, capture_value);
 
         if (capture.capture_group_name.has_value()) {
-            auto group_name = capture.capture_group_name->to_string();
+            auto group_name = capture.capture_group_name.release_value();
             groups_object->create_data_property_or_throw(group_name, js_string(vm, capture.view.u16_view()));
             group_names.set(move(group_name), Match::create(capture));
         }

+ 1 - 1
Userland/Libraries/LibRegex/RegexMatch.h

@@ -487,7 +487,7 @@ public:
     }
 
     RegexStringView view { nullptr };
-    Optional<StringView> capture_group_name {};
+    Optional<FlyString> capture_group_name {};
     size_t line { 0 };
     size_t column { 0 };
     size_t global_offset { 0 };