瀏覽代碼

Everywhere: Replace single-char StringView op. arguments with chars

This prevents us from needing a sv suffix, and potentially reduces the
need to run generic code for a single character (as contains,
starts_with, ends_with etc. for a char will be just a length and
equality check).

No functional changes.
sin-ack 3 年之前
父節點
當前提交
c8585b77d2
共有 86 個文件被更改,包括 283 次插入283 次删除
  1. 2 2
      AK/JsonObject.h
  2. 1 1
      AK/MACAddress.h
  3. 1 1
      Kernel/CommandLine.cpp
  4. 1 1
      Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator/IDLParser.cpp
  5. 1 1
      Tests/Kernel/fuzz-syscalls.cpp
  6. 4 4
      Tests/LibRegex/Regex.cpp
  7. 4 4
      Tests/LibRegex/RegexLibC.cpp
  8. 2 2
      Userland/Applets/ClipboardHistory/ClipboardHistoryModel.cpp
  9. 3 3
      Userland/Applications/3DFileViewer/WavefrontOBJLoader.cpp
  10. 2 2
      Userland/Applications/Assistant/Providers.cpp
  11. 1 1
      Userland/Applications/Calculator/Keypad.cpp
  12. 3 3
      Userland/Applications/CrashReporter/main.cpp
  13. 1 1
      Userland/Applications/FileManager/main.cpp
  14. 1 1
      Userland/Applications/FontEditor/MainWidget.cpp
  15. 5 5
      Userland/Applications/SpaceAnalyzer/main.cpp
  16. 1 1
      Userland/Applications/Spreadsheet/Cell.cpp
  17. 1 1
      Userland/Applications/Spreadsheet/Writers/XSV.h
  18. 2 2
      Userland/Applications/SystemMonitor/main.cpp
  19. 1 1
      Userland/DevTools/HackStudio/Debugger/Debugger.cpp
  20. 1 1
      Userland/DevTools/HackStudio/Dialogs/NewProjectDialog.cpp
  21. 3 3
      Userland/DevTools/HackStudio/HackStudioWidget.cpp
  22. 2 2
      Userland/DevTools/HackStudio/Language.cpp
  23. 1 1
      Userland/DevTools/HackStudio/ProjectBuilder.cpp
  24. 1 1
      Userland/DevTools/HackStudio/main.cpp
  25. 2 2
      Userland/DevTools/Profiler/FilesystemEventModel.cpp
  26. 12 12
      Userland/Games/Chess/ChessWidget.cpp
  27. 16 16
      Userland/Libraries/LibChess/Chess.cpp
  28. 5 5
      Userland/Libraries/LibCodeComprehension/Cpp/CppComprehensionEngine.cpp
  29. 1 1
      Userland/Libraries/LibCodeComprehension/Shell/ShellComprehensionEngine.cpp
  30. 1 1
      Userland/Libraries/LibCore/ArgsParser.cpp
  31. 1 1
      Userland/Libraries/LibCoredump/Backtrace.cpp
  32. 7 7
      Userland/Libraries/LibCpp/AST.cpp
  33. 3 3
      Userland/Libraries/LibDebug/DebugInfo.cpp
  34. 1 1
      Userland/Libraries/LibDebug/DebugSession.cpp
  35. 1 1
      Userland/Libraries/LibGL/GLContext.cpp
  36. 1 1
      Userland/Libraries/LibGUI/ColorPicker.cpp
  37. 9 9
      Userland/Libraries/LibGUI/FileSystemModel.cpp
  38. 5 5
      Userland/Libraries/LibGUI/GML/AST.h
  39. 2 2
      Userland/Libraries/LibGUI/Toolbar.cpp
  40. 3 3
      Userland/Libraries/LibGemini/Document.cpp
  41. 4 4
      Userland/Libraries/LibGfx/Color.cpp
  42. 1 1
      Userland/Libraries/LibGfx/Font/BitmapFont.cpp
  43. 1 1
      Userland/Libraries/LibGfx/Path.cpp
  44. 3 3
      Userland/Libraries/LibIMAP/Client.cpp
  45. 6 6
      Userland/Libraries/LibIMAP/Objects.cpp
  46. 1 1
      Userland/Libraries/LibJS/Bytecode/Op.cpp
  47. 2 2
      Userland/Libraries/LibJS/Runtime/StringPrototype.cpp
  48. 1 1
      Userland/Libraries/LibLine/Editor.cpp
  49. 2 2
      Userland/Libraries/LibMarkdown/List.cpp
  50. 4 4
      Userland/Libraries/LibMarkdown/Table.cpp
  51. 3 3
      Userland/Libraries/LibMarkdown/Text.cpp
  52. 2 2
      Userland/Libraries/LibPDF/Renderer.h
  53. 1 1
      Userland/Libraries/LibSQL/Serializer.h
  54. 1 1
      Userland/Libraries/LibSQL/TreeNode.cpp
  55. 1 1
      Userland/Libraries/LibSQL/TupleDescriptor.h
  56. 2 2
      Userland/Libraries/LibSQL/Value.cpp
  57. 2 2
      Userland/Libraries/LibVT/Terminal.cpp
  58. 1 1
      Userland/Libraries/LibWasm/AbstractMachine/Validator.h
  59. 1 1
      Userland/Libraries/LibWeb/CSS/Parser/Block.cpp
  60. 3 3
      Userland/Libraries/LibWeb/CSS/Parser/Function.cpp
  61. 1 1
      Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
  62. 2 2
      Userland/Libraries/LibWeb/CSS/Parser/Rule.cpp
  63. 1 1
      Userland/Libraries/LibWeb/CSS/Selector.h
  64. 2 2
      Userland/Libraries/LibWeb/HTML/Parser/HTMLEncodingDetection.cpp
  65. 1 1
      Userland/Libraries/LibWeb/HTML/WorkerDebugConsoleClient.cpp
  66. 1 1
      Userland/Libraries/LibWeb/Origin.h
  67. 2 2
      Userland/Libraries/LibWebSocket/ConnectionInfo.cpp
  68. 84 84
      Userland/Libraries/LibX86/Instruction.cpp
  69. 1 1
      Userland/Services/FileOperation/main.cpp
  70. 1 1
      Userland/Services/Taskbar/QuickLaunchWidget.cpp
  71. 1 1
      Userland/Services/WebServer/Client.cpp
  72. 8 8
      Userland/Shell/AST.cpp
  73. 3 3
      Userland/Shell/Builtin.cpp
  74. 1 1
      Userland/Shell/Formatter.cpp
  75. 1 1
      Userland/Shell/Parser.cpp
  76. 2 2
      Userland/Shell/Shell.cpp
  77. 1 1
      Userland/Shell/SyntaxHighlighter.cpp
  78. 1 1
      Userland/Utilities/cpp-preprocessor.cpp
  79. 3 3
      Userland/Utilities/diff.cpp
  80. 1 1
      Userland/Utilities/js.cpp
  81. 2 2
      Userland/Utilities/mkdir.cpp
  82. 1 1
      Userland/Utilities/mount.cpp
  83. 1 1
      Userland/Utilities/stty.cpp
  84. 1 1
      Userland/Utilities/telws.cpp
  85. 1 1
      Userland/Utilities/xargs.cpp
  86. 2 2
      Userland/Utilities/xml.cpp

+ 2 - 2
AK/JsonObject.h

@@ -182,9 +182,9 @@ inline void JsonValue::serialize(Builder& builder) const
 {
     switch (m_type) {
     case Type::String: {
-        builder.append("\"");
+        builder.append('\"');
         builder.append_escaped_for_json({ m_value.as_string->characters(), m_value.as_string->length() });
-        builder.append("\"");
+        builder.append('\"');
     } break;
     case Type::Array:
         m_value.as_array->serialize(builder);

+ 1 - 1
AK/MACAddress.h

@@ -75,7 +75,7 @@ public:
         if (string.is_null())
             return {};
 
-        auto const parts = string.split_view(":");
+        auto const parts = string.split_view(':');
         if (parts.size() != 6)
             return {};
 

+ 1 - 1
Kernel/CommandLine.cpp

@@ -58,7 +58,7 @@ UNMAP_AFTER_INIT NonnullOwnPtr<KString> CommandLine::build_commandline(StringVie
     StringBuilder builder;
     builder.append(cmdline_from_bootloader);
     if constexpr (!s_embedded_cmd_line.is_empty()) {
-        builder.append(" ");
+        builder.append(' ');
         builder.append(s_embedded_cmd_line);
     }
     return KString::must_create(builder.string_view());

+ 1 - 1
Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator/IDLParser.cpp

@@ -60,7 +60,7 @@ static String convert_enumeration_value_to_cpp_enum_member(String const& value,
         } else {
             auto non_alnum_string = lexer.consume_while([](auto c) { return !is_ascii_alphanumeric(c); });
             if (!non_alnum_string.is_empty())
-                builder.append("_");
+                builder.append('_');
         }
     }
 

+ 1 - 1
Tests/Kernel/fuzz-syscalls.cpp

@@ -100,7 +100,7 @@ static void do_weird_call(size_t attempt, int syscall_fn, size_t arg1, size_t ar
             builder.append(", "sv);
         builder.appendff("{:p}", fake_params[i]);
     }
-    builder.append("]");
+    builder.append(']');
     dbgln("{}", builder.build());
 
     // Actually do the syscall ('fake_params' is passed indirectly, if any of arg1, arg2, or arg3 point to it.

+ 4 - 4
Tests/LibRegex/Regex.cpp

@@ -159,7 +159,7 @@ TEST_CASE(parser_error_special_characters_used_at_wrong_place)
 
         // After circumflex
         b.clear();
-        b.append("^");
+        b.append('^');
         b.append(ch);
         pattern = b.build();
         l.set_source(pattern);
@@ -169,7 +169,7 @@ TEST_CASE(parser_error_special_characters_used_at_wrong_place)
 
         // After dollar
         b.clear();
-        b.append("$");
+        b.append('$');
         b.append(ch);
         pattern = b.build();
         l.set_source(pattern);
@@ -179,9 +179,9 @@ TEST_CASE(parser_error_special_characters_used_at_wrong_place)
 
         // After left parens
         b.clear();
-        b.append("(");
+        b.append('(');
         b.append(ch);
-        b.append(")");
+        b.append(')');
         pattern = b.build();
         l.set_source(pattern);
         p.parse();

+ 4 - 4
Tests/LibRegex/RegexLibC.cpp

@@ -341,7 +341,7 @@ TEST_CASE(parser_error_special_characters_used_at_wrong_place)
 
         // After circumflex
         b.clear();
-        b.append("^");
+        b.append('^');
         b.append(ch);
         pattern = b.build();
         EXPECT_EQ(regcomp(&regex, pattern.characters(), REG_EXTENDED), error_code_to_check);
@@ -350,7 +350,7 @@ TEST_CASE(parser_error_special_characters_used_at_wrong_place)
 
         // After dollar
         b.clear();
-        b.append("$");
+        b.append('$');
         b.append(ch);
         pattern = b.build();
         EXPECT_EQ(regcomp(&regex, pattern.characters(), REG_EXTENDED), error_code_to_check);
@@ -359,9 +359,9 @@ TEST_CASE(parser_error_special_characters_used_at_wrong_place)
 
         // After left parens
         b.clear();
-        b.append("(");
+        b.append('(');
         b.append(ch);
-        b.append(")");
+        b.append(')');
         pattern = b.build();
         EXPECT_EQ(regcomp(&regex, pattern.characters(), REG_EXTENDED), error_code_to_check);
         EXPECT_EQ(regexec(&regex, "test", num_matches, matches, 0), error_code_to_check);

+ 2 - 2
Userland/Applets/ClipboardHistory/ClipboardHistoryModel.cpp

@@ -73,13 +73,13 @@ GUI::Variant ClipboardHistoryModel::data(const GUI::ModelIndex& index, GUI::Mode
             return String::copy(data_and_type.data);
         if (data_and_type.mime_type == "image/x-serenityos") {
             StringBuilder builder;
-            builder.append("[");
+            builder.append('[');
             builder.append(data_and_type.metadata.get("width").value_or("?"));
             builder.append('x');
             builder.append(data_and_type.metadata.get("height").value_or("?"));
             builder.append('x');
             builder.append(bpp_for_format_resilient(data_and_type.metadata.get("format").value_or("0")));
-            builder.append("]");
+            builder.append(']');
             builder.append(" bitmap"sv);
             return builder.to_string();
         }

+ 3 - 3
Userland/Applications/3DFileViewer/WavefrontOBJLoader.cpp

@@ -28,7 +28,7 @@ RefPtr<Mesh> WavefrontOBJLoader::load(Core::File& file)
     // Start reading file line by line
     for (auto object_line : file.lines()) {
         // Ignore file comments
-        if (object_line.starts_with("#"))
+        if (object_line.starts_with('#'))
             continue;
 
         if (object_line.starts_with("vt"sv)) {
@@ -59,7 +59,7 @@ RefPtr<Mesh> WavefrontOBJLoader::load(Core::File& file)
         }
 
         // This line describes a vertex (a position in 3D space)
-        if (object_line.starts_with("v")) {
+        if (object_line.starts_with('v')) {
             auto vertex_line = object_line.split_view(' ');
             if (vertex_line.size() != 4) {
                 dbgln("Wavefront: Malformed vertex line. Aborting.");
@@ -74,7 +74,7 @@ RefPtr<Mesh> WavefrontOBJLoader::load(Core::File& file)
         }
 
         // This line describes a face (a collection of 3+ vertices, aka a triangle or polygon)
-        if (object_line.starts_with("f")) {
+        if (object_line.starts_with('f')) {
             auto face_line = object_line.substring_view(2).split_view(' ');
             auto number_of_vertices = face_line.size();
             if (number_of_vertices < 3) {

+ 2 - 2
Userland/Applications/Assistant/Providers.cpp

@@ -62,7 +62,7 @@ void URLResult::activate() const
 
 void AppProvider::query(String const& query, Function<void(NonnullRefPtrVector<Result>)> on_complete)
 {
-    if (query.starts_with("=") || query.starts_with('$'))
+    if (query.starts_with('=') || query.starts_with('$'))
         return;
 
     NonnullRefPtrVector<Result> results;
@@ -81,7 +81,7 @@ void AppProvider::query(String const& query, Function<void(NonnullRefPtrVector<R
 
 void CalculatorProvider::query(String const& query, Function<void(NonnullRefPtrVector<Result>)> on_complete)
 {
-    if (!query.starts_with("="))
+    if (!query.starts_with('='))
         return;
 
     auto vm = JS::VM::create();

+ 1 - 1
Userland/Applications/Calculator/Keypad.cpp

@@ -121,7 +121,7 @@ String Keypad::to_string() const
 {
     StringBuilder builder;
     if (m_negative)
-        builder.append("-");
+        builder.append('-');
     builder.appendff("{}", m_int_value.value());
 
     // NOTE: This is so the decimal point appears on screen as soon as you type it.

+ 3 - 3
Userland/Applications/CrashReporter/main.cpp

@@ -209,7 +209,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     };
 
     auto& arguments_label = *widget->find_descendant_of_type_named<GUI::Label>("arguments_label");
-    arguments_label.set_text(String::join(" ", crashed_process_arguments));
+    arguments_label.set_text(String::join(' ', crashed_process_arguments));
 
     auto& progressbar = *widget->find_descendant_of_type_named<GUI::Progressbar>("progressbar");
     auto& tab_widget = *widget->find_descendant_of_type_named<GUI::TabWidget>("tab_widget");
@@ -241,7 +241,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     environment_tab->layout()->set_margins(4);
 
     auto environment_text_editor = TRY(environment_tab->try_add<GUI::TextEditor>());
-    environment_text_editor->set_text(String::join("\n", environment));
+    environment_text_editor->set_text(String::join('\n', environment));
     environment_text_editor->set_mode(GUI::TextEditor::Mode::ReadOnly);
     environment_text_editor->set_should_hide_unnecessary_scrollbars(true);
 
@@ -250,7 +250,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     memory_regions_tab->layout()->set_margins(4);
 
     auto memory_regions_text_editor = TRY(memory_regions_tab->try_add<GUI::TextEditor>());
-    memory_regions_text_editor->set_text(String::join("\n", memory_regions));
+    memory_regions_text_editor->set_text(String::join('\n', memory_regions));
     memory_regions_text_editor->set_mode(GUI::TextEditor::Mode::ReadOnly);
     memory_regions_text_editor->set_should_hide_unnecessary_scrollbars(true);
     memory_regions_text_editor->set_visualize_trailing_whitespace(false);

+ 1 - 1
Userland/Applications/FileManager/main.cpp

@@ -201,7 +201,7 @@ void do_create_archive(Vector<String> const& selected_file_paths, GUI::Window* w
 
     StringBuilder path_builder;
     path_builder.append(output_directory_path.dirname());
-    path_builder.append("/");
+    path_builder.append('/');
     if (archive_name.is_empty()) {
         path_builder.append(output_directory_path.parent().basename());
         path_builder.append(".zip"sv);

+ 1 - 1
Userland/Applications/FontEditor/MainWidget.cpp

@@ -849,7 +849,7 @@ void MainWidget::update_statusbar()
         builder.append_code_point(glyph);
     }
 
-    builder.append(")");
+    builder.append(')');
 
     auto glyph_name = Unicode::code_point_display_name(glyph);
     if (glyph_name.has_value()) {

+ 5 - 5
Userland/Applications/SpaceAnalyzer/main.cpp

@@ -169,7 +169,7 @@ struct QueueEntry {
 
 static void populate_filesize_tree(TreeNode& root, Vector<MountInfo>& mounts, HashMap<int, int>& error_accumulator, GUI::Label& progresslabel)
 {
-    VERIFY(!root.m_name.ends_with("/"));
+    VERIFY(!root.m_name.ends_with('/'));
 
     Queue<QueueEntry> queue;
     queue.enqueue(QueueEntry(root.m_name, &root));
@@ -177,7 +177,7 @@ static void populate_filesize_tree(TreeNode& root, Vector<MountInfo>& mounts, Ha
 
     StringBuilder builder = StringBuilder();
     builder.append(root.m_name);
-    builder.append("/");
+    builder.append('/');
     MountInfo* root_mount_info = find_mount_for_path(builder.to_string(), mounts);
     if (!root_mount_info) {
         return;
@@ -187,7 +187,7 @@ static void populate_filesize_tree(TreeNode& root, Vector<MountInfo>& mounts, Ha
 
         builder.clear();
         builder.append(queue_entry.path);
-        builder.append("/");
+        builder.append('/');
 
         MountInfo* mount_info = find_mount_for_path(builder.to_string(), mounts);
         if (!mount_info || (mount_info != root_mount_info && mount_info->source != root_mount_info->source)) {
@@ -269,7 +269,7 @@ static void analyze(RefPtr<Tree> tree, SpaceAnalyzer::TreeMapWidget& treemapwidg
             } else {
                 builder.append(" times"sv);
             }
-            builder.append(")");
+            builder.append(')');
             first = false;
         }
         statusbar.set_text(builder.to_string());
@@ -404,7 +404,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
 
             const SpaceAnalyzer::TreeMapNode* node = treemapwidget.path_node(k);
 
-            builder.append("/");
+            builder.append('/');
             builder.append(node->name());
 
             breadcrumbbar.append_segment(node->name(), GUI::FileIconProvider::icon_for_path(builder.string_view()).bitmap_for_size(16), builder.string_view(), builder.string_view());

+ 1 - 1
Userland/Applications/Spreadsheet/Cell.cpp

@@ -22,7 +22,7 @@ void Cell::set_data(String new_data)
     if (m_data == new_data)
         return;
 
-    if (new_data.starts_with("=")) {
+    if (new_data.starts_with('=')) {
         new_data = new_data.substring(1, new_data.length() - 1);
         m_kind = Formula;
     } else {

+ 1 - 1
Userland/Applications/Spreadsheet/Writers/XSV.h

@@ -140,7 +140,7 @@ private:
         auto string = String::formatted("{}", FormatIfSupported(entry));
 
         auto safe_to_write_normally = (m_behaviors & WriterBehavior::QuoteAll) == WriterBehavior::None
-            && !string.contains("\n")
+            && !string.contains('\n')
             && !string.contains(m_traits.separator);
 
         if (safe_to_write_normally) {

+ 2 - 2
Userland/Applications/SystemMonitor/main.cpp

@@ -226,9 +226,9 @@ public:
                 "Size", Gfx::TextAlignment::CenterRight,
                 [](const JsonObject& object) {
                     StringBuilder size_builder;
-                    size_builder.append(" ");
+                    size_builder.append(' ');
                     size_builder.append(human_readable_size(object.get("total_block_count"sv).to_u64() * object.get("block_size"sv).to_u64()));
-                    size_builder.append(" ");
+                    size_builder.append(' ');
                     return size_builder.to_string();
                 },
                 [](const JsonObject& object) {

+ 1 - 1
Userland/DevTools/HackStudio/Debugger/Debugger.cpp

@@ -94,7 +94,7 @@ bool Debugger::set_execution_position(String const& file, size_t line)
 
 Debug::DebugInfo::SourcePosition Debugger::create_source_position(String const& file, size_t line)
 {
-    if (file.starts_with("/"))
+    if (file.starts_with('/'))
         return { file, line + 1 };
     return { LexicalPath::canonicalized_path(String::formatted("{}/{}", m_source_root, file)), line + 1 };
 }

+ 1 - 1
Userland/DevTools/HackStudio/Dialogs/NewProjectDialog.cpp

@@ -161,7 +161,7 @@ Optional<String> NewProjectDialog::get_available_project_name()
 Optional<String> NewProjectDialog::get_project_full_path()
 {
     // Do not permit forward-slashes in project names
-    if (m_name_input->text().contains("/"))
+    if (m_name_input->text().contains('/'))
         return {};
 
     auto create_in = m_create_in_input->text();

+ 3 - 3
Userland/DevTools/HackStudio/HackStudioWidget.cpp

@@ -619,7 +619,7 @@ NonnullRefPtr<GUI::Action> HackStudioWidget::create_copy_relative_path_action()
     auto copy_relative_path_action = GUI::Action::create("Copy &Relative Path", [this](const GUI::Action&) {
         auto paths = selected_file_paths();
         VERIFY(!paths.is_empty());
-        auto paths_string = String::join("\n", paths);
+        auto paths_string = String::join('\n', paths);
         GUI::Clipboard::the().set_plain_text(paths_string);
     });
     copy_relative_path_action->set_enabled(true);
@@ -636,7 +636,7 @@ NonnullRefPtr<GUI::Action> HackStudioWidget::create_copy_full_path_action()
         Vector<String> full_paths;
         for (auto& path : paths)
             full_paths.append(get_absolute_path(path));
-        auto paths_string = String::join("\n", full_paths);
+        auto paths_string = String::join('\n', full_paths);
         GUI::Clipboard::the().set_plain_text(paths_string);
     });
     copy_full_path_action->set_enabled(true);
@@ -1086,7 +1086,7 @@ String HackStudioWidget::get_full_path_of_serenity_source(String const& file)
         path_parts.remove(0);
     }
     StringBuilder relative_path_builder;
-    relative_path_builder.join("/", path_parts);
+    relative_path_builder.join('/', path_parts);
     constexpr char SERENITY_LIBS_PREFIX[] = "/usr/src/serenity";
     LexicalPath serenity_sources_base(SERENITY_LIBS_PREFIX);
     return String::formatted("{}/{}", serenity_sources_base, relative_path_builder.to_string());

+ 2 - 2
Userland/DevTools/HackStudio/Language.cpp

@@ -15,7 +15,7 @@ Language language_from_file(LexicalPath const& file)
         return Language::GitCommit;
 
     auto extension = file.extension();
-    VERIFY(!extension.starts_with("."));
+    VERIFY(!extension.starts_with('.'));
     if (extension == "c" || extension == "cc" || extension == "cxx" || extension == "cpp" || extension == "c++"
         || extension == "h" || extension == "hh" || extension == "hxx" || extension == "hpp" || extension == "h++")
         return Language::Cpp;
@@ -57,7 +57,7 @@ String language_name_from_file(LexicalPath const& file)
         return "GitCommit";
 
     auto extension = file.extension();
-    VERIFY(!extension.starts_with("."));
+    VERIFY(!extension.starts_with('.'));
     if (extension == "c" || extension == "cc" || extension == "cxx" || extension == "cpp" || extension == "c++"
         || extension == "h" || extension == "hh" || extension == "hxx" || extension == "hpp" || extension == "h++")
         return "C++";

+ 1 - 1
Userland/DevTools/HackStudio/ProjectBuilder.cpp

@@ -246,7 +246,7 @@ void ProjectBuilder::for_each_library_dependencies(Function<void(String, Vector<
         auto library_name = result.capture_group_matches.at(0).at(0).view.string_view();
         auto dependencies_string = result.capture_group_matches.at(0).at(1).view.string_view();
 
-        func(library_name, dependencies_string.split_view(" "));
+        func(library_name, dependencies_string.split_view(' '));
     }
 }
 

+ 1 - 1
Userland/DevTools/HackStudio/main.cpp

@@ -127,7 +127,7 @@ static void update_path_environment_variable()
         path.append({ path_env_ptr, strlen(path_env_ptr) });
 
     if (path.length())
-        path.append(":");
+        path.append(':');
     path.append("/usr/local/sbin:/usr/local/bin:/usr/bin:/bin"sv);
     setenv("PATH", path.to_string().characters(), true);
 }

+ 2 - 2
Userland/DevTools/Profiler/FilesystemEventModel.cpp

@@ -35,7 +35,7 @@ FileEventNode& FileEventNode::find_or_create_node(String const& searched_path)
     auto current = parts.take_first();
 
     StringBuilder sb;
-    sb.join("/", parts);
+    sb.join('/', parts);
     auto new_s = sb.to_string();
 
     for (auto& child : m_children) {
@@ -75,7 +75,7 @@ FileEventNode& FileEventNode::create_recursively(String new_path)
         m_children.append(new_node);
 
         StringBuilder sb;
-        sb.join("/", parts);
+        sb.join('/', parts);
 
         return new_node->create_recursively(sb.to_string());
     }

+ 12 - 12
Userland/Games/Chess/ChessWidget.cpp

@@ -555,45 +555,45 @@ bool ChessWidget::import_pgn(StringView import_path)
         token = token.trim_whitespace();
 
         // FIXME: Parse all of these tokens when we start caring about them
-        if (token.ends_with("}")) {
+        if (token.ends_with('}')) {
             skip = false;
             continue;
         }
         if (skip)
             continue;
-        if (token.starts_with("{")) {
-            if (token.ends_with("}"))
+        if (token.starts_with('{')) {
+            if (token.ends_with('}'))
                 continue;
             skip = true;
             continue;
         }
-        if (token.ends_with(")")) {
+        if (token.ends_with(')')) {
             recursive_annotation = false;
             continue;
         }
         if (recursive_annotation)
             continue;
-        if (token.starts_with("(")) {
-            if (token.ends_with(")"))
+        if (token.starts_with('(')) {
+            if (token.ends_with(')'))
                 continue;
             recursive_annotation = true;
             continue;
         }
-        if (token.ends_with(">")) {
+        if (token.ends_with('>')) {
             future_expansion = false;
             continue;
         }
         if (future_expansion)
             continue;
-        if (token.starts_with("<")) {
-            if (token.ends_with(">"))
+        if (token.starts_with('<')) {
+            if (token.ends_with('>'))
                 continue;
             future_expansion = true;
             continue;
         }
-        if (token.starts_with("$"))
+        if (token.starts_with('$'))
             continue;
-        if (token.contains("*"))
+        if (token.contains('*'))
             break;
         // FIXME: When we become able to set more of the game state, fix these end results
         if (token.contains("1-0"sv)) {
@@ -607,7 +607,7 @@ bool ChessWidget::import_pgn(StringView import_path)
         if (token.contains("1/2-1/2"sv)) {
             break;
         }
-        if (!token.ends_with(".")) {
+        if (!token.ends_with('.')) {
             m_board.apply_move(Chess::Move::from_algebraic(token, turn, m_board));
             turn = Chess::opposing_color(turn);
         }

+ 16 - 16
Userland/Libraries/LibChess/Chess.cpp

@@ -106,7 +106,7 @@ Move Move::from_algebraic(StringView algebraic, const Color turn, Board const& b
     String move_string = algebraic;
     Move move({ 50, 50 }, { 50, 50 });
 
-    if (move_string.contains("-")) {
+    if (move_string.contains('-')) {
         move.from = Square(turn == Color::White ? 0 : 7, 4);
         move.to = Square(turn == Color::White ? 0 : 7, move_string == "O-O" ? 6 : 2);
         move.promote_to = Type::None;
@@ -115,15 +115,15 @@ Move Move::from_algebraic(StringView algebraic, const Color turn, Board const& b
         return move;
     }
 
-    if (algebraic.contains("#")) {
+    if (algebraic.contains('#')) {
         move.is_mate = true;
         move_string = move_string.substring(0, move_string.length() - 1);
-    } else if (algebraic.contains("+")) {
+    } else if (algebraic.contains('+')) {
         move.is_check = true;
         move_string = move_string.substring(0, move_string.length() - 1);
     }
 
-    if (algebraic.contains("=")) {
+    if (algebraic.contains('=')) {
         move.promote_to = piece_for_char_promotion(move_string.split('=').at(1).substring(0, 1));
         move_string = move_string.split('=').at(0);
     }
@@ -131,7 +131,7 @@ Move Move::from_algebraic(StringView algebraic, const Color turn, Board const& b
     move.to = Square(move_string.substring(move_string.length() - 2, 2));
     move_string = move_string.substring(0, move_string.length() - 2);
 
-    if (move_string.contains("x")) {
+    if (move_string.contains('x')) {
         move.is_capture = true;
         move_string = move_string.substring(0, move_string.length() - 1);
     }
@@ -201,20 +201,20 @@ String Move::to_algebraic() const
     if (is_capture) {
         if (piece.type == Type::Pawn && !is_ambiguous)
             builder.append(from.to_algebraic().substring(0, 1));
-        builder.append("x");
+        builder.append('x');
     }
 
     builder.append(to.to_algebraic());
 
     if (promote_to != Type::None) {
-        builder.append("=");
+        builder.append('=');
         builder.append(char_for_piece(promote_to));
     }
 
     if (is_mate)
-        builder.append("#");
+        builder.append('#');
     else if (is_check)
-        builder.append("+");
+        builder.append('+');
 
     return builder.build();
 }
@@ -287,7 +287,7 @@ String Board::to_fen() const
             empty = 0;
         }
         if (rank < 7)
-            builder.append("/");
+            builder.append('/');
     }
 
     // 2. Active color
@@ -299,26 +299,26 @@ String Board::to_fen() const
     builder.append(m_white_can_castle_queenside ? "Q"sv : ""sv);
     builder.append(m_black_can_castle_kingside ? "k"sv : ""sv);
     builder.append(m_black_can_castle_queenside ? "q"sv : ""sv);
-    builder.append(" ");
+    builder.append(' ');
 
     // 4. En passant target square
     if (!m_last_move.has_value())
-        builder.append("-");
+        builder.append('-');
     else if (m_last_move.value().piece.type == Type::Pawn) {
         if (m_last_move.value().from.rank == 1 && m_last_move.value().to.rank == 3)
             builder.append(Square(m_last_move.value().to.rank - 1, m_last_move.value().to.file).to_algebraic());
         else if (m_last_move.value().from.rank == 6 && m_last_move.value().to.rank == 4)
             builder.append(Square(m_last_move.value().to.rank + 1, m_last_move.value().to.file).to_algebraic());
         else
-            builder.append("-");
+            builder.append('-');
     } else {
-        builder.append("-");
+        builder.append('-');
     }
-    builder.append(" ");
+    builder.append(' ');
 
     // 5. Halfmove clock
     builder.append(String::number(min(m_moves_since_capture, m_moves_since_pawn_advance)));
-    builder.append(" ");
+    builder.append(' ');
 
     // 6. Fullmove number
     builder.append(String::number(1 + m_moves.size() / 2));

+ 5 - 5
Userland/Libraries/LibCodeComprehension/Cpp/CppComprehensionEngine.cpp

@@ -695,16 +695,16 @@ Optional<Vector<CodeComprehension::AutocompleteResultEntry>> CppComprehensionEng
 
     String include_root;
     bool already_has_suffix = false;
-    if (partial_include.starts_with("<")) {
+    if (partial_include.starts_with('<')) {
         include_root = "/usr/include/";
         include_type = System;
-        if (partial_include.ends_with(">")) {
+        if (partial_include.ends_with('>')) {
             already_has_suffix = true;
             partial_include = partial_include.substring_view(0, partial_include.length() - 1).trim_whitespace();
         }
-    } else if (partial_include.starts_with("\"")) {
+    } else if (partial_include.starts_with('"')) {
         include_root = filedb().project_root();
-        if (partial_include.length() > 1 && partial_include.ends_with("\"")) {
+        if (partial_include.length() > 1 && partial_include.ends_with('\"')) {
             already_has_suffix = true;
             partial_include = partial_include.substring_view(0, partial_include.length() - 1).trim_whitespace();
         }
@@ -923,7 +923,7 @@ Optional<CppComprehensionEngine::FunctionParamsHint> CppComprehensionEngine::get
         for (auto token : document_of_declaration->parser().tokens_in_range(arg.start(), arg.end())) {
             tokens_text.append(token.text());
         }
-        hint.params.append(String::join(" ", tokens_text));
+        hint.params.append(String::join(' ', tokens_text));
     }
 
     return hint;

+ 1 - 1
Userland/Libraries/LibCodeComprehension/Shell/ShellComprehensionEngine.cpp

@@ -80,7 +80,7 @@ Vector<String> const& ShellComprehensionEngine::DocumentData::sourced_paths() co
                             return;
                         auto name_list = const_cast<::Shell::AST::Node*>(filename.ptr())->run(nullptr)->resolve_as_list(nullptr);
                         StringBuilder builder;
-                        builder.join(" ", name_list);
+                        builder.join(' ', name_list);
                         sourced_files.set(builder.build());
                     }
                 }

+ 1 - 1
Userland/Libraries/LibCore/ArgsParser.cpp

@@ -763,7 +763,7 @@ void ArgsParser::autocomplete(FILE* file, StringView program_name, Span<char con
             continue;
         }
 
-        if (argument.starts_with("-")) {
+        if (argument.starts_with('-')) {
             option_to_complete = argument;
             completing_option = true;
 

+ 1 - 1
Userland/Libraries/LibCoredump/Backtrace.cpp

@@ -153,7 +153,7 @@ String Backtrace::Entry::to_string(bool color) const
         }
     }
 
-    builder.append(")");
+    builder.append(')');
 
     return builder.build();
 }

+ 7 - 7
Userland/Libraries/LibCpp/AST.cpp

@@ -35,7 +35,7 @@ void FunctionDeclaration::dump(FILE* output, size_t indent) const
     String qualifiers_string;
     if (!m_qualifiers.is_empty()) {
         print_indent(output, indent + 1);
-        outln(output, "[{}]", String::join(" ", m_qualifiers));
+        outln(output, "[{}]", String::join(' ', m_qualifiers));
     }
 
     m_return_type->dump(output, indent + 1);
@@ -79,7 +79,7 @@ String NamedType::to_string() const
 {
     String qualifiers_string;
     if (!qualifiers().is_empty())
-        qualifiers_string = String::formatted("[{}] ", String::join(" ", qualifiers()));
+        qualifiers_string = String::formatted("[{}] ", String::join(' ', qualifiers()));
 
     String name;
     if (is_auto())
@@ -96,7 +96,7 @@ String Pointer::to_string() const
         return {};
     StringBuilder builder;
     builder.append(m_pointee->to_string());
-    builder.append("*");
+    builder.append('*');
     return builder.to_string();
 }
 
@@ -107,7 +107,7 @@ String Reference::to_string() const
     StringBuilder builder;
     builder.append(m_referenced_type->to_string());
     if (m_kind == Kind::Lvalue)
-        builder.append("&");
+        builder.append('&');
     else
         builder.append("&&"sv);
     return builder.to_string();
@@ -117,7 +117,7 @@ String FunctionType::to_string() const
 {
     StringBuilder builder;
     builder.append(m_return_type->to_string());
-    builder.append("(");
+    builder.append('(');
     bool first = true;
     for (auto& parameter : m_parameters) {
         if (first)
@@ -127,11 +127,11 @@ String FunctionType::to_string() const
         if (parameter.type())
             builder.append(parameter.type()->to_string());
         if (parameter.name() && !parameter.full_name().is_empty()) {
-            builder.append(" ");
+            builder.append(' ');
             builder.append(parameter.full_name());
         }
     }
-    builder.append(")");
+    builder.append(')');
     return builder.to_string();
 }
 

+ 3 - 3
Userland/Libraries/LibDebug/DebugInfo.cpp

@@ -132,7 +132,7 @@ Optional<DebugInfo::SourcePosition> DebugInfo::get_source_position(FlatPtr targe
 Optional<DebugInfo::SourcePositionAndAddress> DebugInfo::get_address_from_source_position(String const& file, size_t line) const
 {
     String file_path = file;
-    if (!file_path.starts_with("/"))
+    if (!file_path.starts_with('/'))
         file_path = String::formatted("/{}", file_path);
 
     constexpr auto SERENITY_LIBS_PREFIX = "/usr/src/serenity"sv;
@@ -326,9 +326,9 @@ void DebugInfo::add_type_info_to_variable(Dwarf::DIE const& type_die, PtraceRegi
             StringBuilder array_type_name;
             array_type_name.append(type_info->type_name);
             for (auto array_size : type_info->dimension_sizes) {
-                array_type_name.append("[");
+                array_type_name.append('[');
                 array_type_name.append(String::formatted("{:d}", array_size));
-                array_type_name.append("]");
+                array_type_name.append(']');
             }
             parent_variable->type_name = array_type_name.to_string();
         }

+ 1 - 1
Userland/Libraries/LibDebug/DebugSession.cpp

@@ -438,7 +438,7 @@ void DebugSession::update_loaded_libs()
         if (!rc)
             return {};
         auto lib_name = result.capture_group_matches.at(0).at(0).view.string_view().to_string();
-        if (lib_name.starts_with("/"))
+        if (lib_name.starts_with('/'))
             return lib_name;
         return String::formatted("/usr/lib/{}", lib_name);
     };

+ 1 - 1
Userland/Libraries/LibGL/GLContext.cpp

@@ -1221,7 +1221,7 @@ void GLContext::build_extension_string()
     if (m_device_info.num_texture_units > 1)
         extensions.append("GL_ARB_multitexture"sv);
 
-    m_extensions = String::join(" ", extensions);
+    m_extensions = String::join(' ', extensions);
 }
 
 NonnullOwnPtr<GLContext> create_context(Gfx::Bitmap& bitmap)

+ 1 - 1
Userland/Libraries/LibGUI/ColorPicker.cpp

@@ -324,7 +324,7 @@ void ColorPicker::build_ui_custom(Widget& root_container)
     m_html_text->on_change = [this]() {
         auto color_name = m_html_text->text();
         auto optional_color = Color::from_string(color_name);
-        if (optional_color.has_value() && (!color_name.starts_with("#") || color_name.length() == ((m_color_has_alpha_channel) ? 9 : 7))) {
+        if (optional_color.has_value() && (!color_name.starts_with('#') || color_name.length() == ((m_color_has_alpha_channel) ? 9 : 7))) {
             // The color length must be 9/7 (unless it is a name like red), because:
             //    - If we allowed 5/4 character rgb color, the field would reset to 9/7 characters after you deleted 4/3 characters.
             auto color = optional_color.value();

+ 9 - 9
Userland/Libraries/LibGUI/FileSystemModel.cpp

@@ -296,21 +296,21 @@ static String permission_string(mode_t mode)
 {
     StringBuilder builder;
     if (S_ISDIR(mode))
-        builder.append("d");
+        builder.append('d');
     else if (S_ISLNK(mode))
-        builder.append("l");
+        builder.append('l');
     else if (S_ISBLK(mode))
-        builder.append("b");
+        builder.append('b');
     else if (S_ISCHR(mode))
-        builder.append("c");
+        builder.append('c');
     else if (S_ISFIFO(mode))
-        builder.append("f");
+        builder.append('f');
     else if (S_ISSOCK(mode))
-        builder.append("s");
+        builder.append('s');
     else if (S_ISREG(mode))
-        builder.append("-");
+        builder.append('-');
     else
-        builder.append("?");
+        builder.append('?');
 
     builder.append(mode & S_IRUSR ? 'r' : '-');
     builder.append(mode & S_IWUSR ? 'w' : '-');
@@ -384,7 +384,7 @@ void FileSystemModel::handle_file_event(Core::FileWatcherEvent const& event)
         LexicalPath path { event.event_path };
         auto& parts = path.parts_view();
         StringView child_name = parts.last();
-        if (!m_should_show_dotfiles && child_name.starts_with("."))
+        if (!m_should_show_dotfiles && child_name.starts_with('.'))
             break;
 
         auto parent_name = path.parent().string();

+ 5 - 5
Userland/Libraries/LibGUI/GML/AST.h

@@ -79,7 +79,7 @@ public:
             indent(builder, indentation);
             builder.append(m_text);
         }
-        builder.append("\n");
+        builder.append('\n');
     }
     virtual ~Comment() override = default;
 
@@ -103,7 +103,7 @@ public:
         builder.appendff("{}: ", m_key);
         m_value->format(builder, indentation, true);
         if (!is_inline)
-            builder.append("\n");
+            builder.append('\n');
     }
 
     String key() const { return m_key; }
@@ -132,7 +132,7 @@ public:
         if (is_array()) {
             // custom array serialization as AK's doesn't pretty-print
             // objects and arrays (we only care about arrays (for now))
-            builder.append("[");
+            builder.append('[');
             auto first = true;
             as_array().for_each([&](auto& value) {
                 if (!first)
@@ -140,12 +140,12 @@ public:
                 first = false;
                 value.serialize(builder);
             });
-            builder.append("]");
+            builder.append(']');
         } else {
             serialize(builder);
         }
         if (!is_inline)
-            builder.append("\n");
+            builder.append('\n');
     }
 };
 

+ 2 - 2
Userland/Libraries/LibGUI/Toolbar.cpp

@@ -61,9 +61,9 @@ private:
         StringBuilder builder;
         builder.append(action.text());
         if (action.shortcut().is_valid()) {
-            builder.append(" (");
+            builder.append(" ("sv);
             builder.append(action.shortcut().to_string());
-            builder.append(")");
+            builder.append(')');
         }
         return builder.to_string();
     }

+ 3 - 3
Userland/Libraries/LibGemini/Document.cpp

@@ -62,7 +62,7 @@ void Document::read_lines(StringView source)
             continue;
         }
 
-        if (line.starts_with("*")) {
+        if (line.starts_with('*')) {
             if (!m_inside_unordered_list)
                 m_lines.append(make<Control>(Control::UnorderedListStart));
             m_lines.append(make<UnorderedList>(move(line)));
@@ -72,12 +72,12 @@ void Document::read_lines(StringView source)
 
         close_list_if_needed();
 
-        if (line.starts_with("=>")) {
+        if (line.starts_with("=>"sv)) {
             m_lines.append(make<Link>(move(line), *this));
             continue;
         }
 
-        if (line.starts_with("#")) {
+        if (line.starts_with('#')) {
             size_t level = 0;
             while (line.length() > level && line[level] == '#')
                 ++level;

+ 4 - 4
Userland/Libraries/LibGfx/Color.cpp

@@ -30,7 +30,7 @@ String Color::to_string_without_alpha() const
 static Optional<Color> parse_rgb_color(StringView string)
 {
     VERIFY(string.starts_with("rgb("sv, CaseSensitivity::CaseInsensitive));
-    VERIFY(string.ends_with(")"));
+    VERIFY(string.ends_with(')'));
 
     auto substring = string.substring_view(4, string.length() - 5);
     auto parts = substring.split_view(',');
@@ -51,7 +51,7 @@ static Optional<Color> parse_rgb_color(StringView string)
 static Optional<Color> parse_rgba_color(StringView string)
 {
     VERIFY(string.starts_with("rgba("sv, CaseSensitivity::CaseInsensitive));
-    VERIFY(string.ends_with(")"));
+    VERIFY(string.ends_with(')'));
 
     auto substring = string.substring_view(5, string.length() - 6);
     auto parts = substring.split_view(',');
@@ -252,10 +252,10 @@ Optional<Color> Color::from_string(StringView string)
             return Color::from_rgb(web_colors[i].color);
     }
 
-    if (string.starts_with("rgb("sv, CaseSensitivity::CaseInsensitive) && string.ends_with(")"))
+    if (string.starts_with("rgb("sv, CaseSensitivity::CaseInsensitive) && string.ends_with(')'))
         return parse_rgb_color(string);
 
-    if (string.starts_with("rgba("sv, CaseSensitivity::CaseInsensitive) && string.ends_with(")"))
+    if (string.starts_with("rgba("sv, CaseSensitivity::CaseInsensitive) && string.ends_with(')'))
         return parse_rgba_color(string);
 
     if (string[0] != '#')

+ 1 - 1
Userland/Libraries/LibGfx/Font/BitmapFont.cpp

@@ -356,7 +356,7 @@ String BitmapFont::variant() const
         if (builder.string_view() == "Regular"sv)
             builder.clear();
         else
-            builder.append(" ");
+            builder.append(' ');
         builder.append(slope_to_name(slope()));
     }
     return builder.to_string();

+ 1 - 1
Userland/Libraries/LibGfx/Path.cpp

@@ -231,7 +231,7 @@ String Path::to_string() const
 
         builder.append(") "sv);
     }
-    builder.append("}");
+    builder.append('}');
     return builder.to_string();
 }
 

+ 3 - 3
Userland/Libraries/LibIMAP/Client.cpp

@@ -303,7 +303,7 @@ RefPtr<Promise<Optional<SolidResponse>>> Client::store(StoreMethod method, Seque
 
     StringBuilder flags_builder;
     flags_builder.append('(');
-    flags_builder.join(" ", flags);
+    flags_builder.join(' ', flags);
     flags_builder.append(')');
 
     auto command = Command { uid ? CommandType::UIDStore : CommandType::Store, m_current_command, { sequence_set.serialize(), data_item_name.build(), flags_builder.build() } };
@@ -361,7 +361,7 @@ RefPtr<Promise<Optional<SolidResponse>>> Client::status(StringView mailbox, Vect
     }
     StringBuilder types_list;
     types_list.append('(');
-    types_list.join(" ", args);
+    types_list.join(' ', args);
     types_list.append(')');
     auto command = Command { CommandType::Status, m_current_command, { mailbox, types_list.build() } };
     return cast_promise<SolidResponse>(send_command(move(command)));
@@ -373,7 +373,7 @@ RefPtr<Promise<Optional<SolidResponse>>> Client::append(StringView mailbox, Mess
     if (flags.has_value()) {
         StringBuilder flags_sb;
         flags_sb.append('(');
-        flags_sb.join(" ", flags.value());
+        flags_sb.join(' ', flags.value());
         flags_sb.append(')');
         args.append(flags_sb.build());
     }

+ 6 - 6
Userland/Libraries/LibIMAP/Objects.cpp

@@ -36,11 +36,11 @@ String FetchCommand::DataItem::Section::serialize() const
         bool first = true;
         for (auto& field : headers.value()) {
             if (!first)
-                headers_builder.append(" ");
+                headers_builder.append(' ');
             headers_builder.append(field);
             first = false;
         }
-        headers_builder.append(")");
+        headers_builder.append(')');
         return headers_builder.build();
     }
     case SectionType::Text:
@@ -50,7 +50,7 @@ String FetchCommand::DataItem::Section::serialize() const
         bool first = true;
         for (int part : parts.value()) {
             if (!first)
-                sb.append(".");
+                sb.append('.');
             sb.appendff("{}", part);
             first = false;
         }
@@ -95,7 +95,7 @@ String FetchCommand::serialize()
     bool first = true;
     for (auto& sequence : sequence_set) {
         if (!first) {
-            sequence_builder.append(",");
+            sequence_builder.append(',');
         }
         sequence_builder.append(sequence.serialize());
         first = false;
@@ -105,7 +105,7 @@ String FetchCommand::serialize()
     first = true;
     for (auto& data_item : data_items) {
         if (!first) {
-            data_items_builder.append(" ");
+            data_items_builder.append(' ');
         }
         data_items_builder.append(data_item.serialize());
         first = false;
@@ -156,7 +156,7 @@ String SearchKey::serialize() const
         [&](Recent const&) { return String("RECENT"); },
         [&](SearchKeys const& x) {
             StringBuilder sb;
-            sb.append("(");
+            sb.append('(');
             bool first = true;
             for (const auto& item : x.keys) {
                 if (!first)

+ 1 - 1
Userland/Libraries/LibJS/Bytecode/Op.cpp

@@ -1030,7 +1030,7 @@ String PushDeclarativeEnvironment::to_string_impl(Bytecode::Executable const& ex
         Vector<String> names;
         for (auto& it : m_variables)
             names.append(executable.get_string(it.key));
-        builder.append("}");
+        builder.append('}');
         builder.join(", "sv, names);
     }
     return builder.to_string();

+ 2 - 2
Userland/Libraries/LibJS/Runtime/StringPrototype.cpp

@@ -791,7 +791,7 @@ JS_DEFINE_NATIVE_FUNCTION(StringPrototype::match_all)
             auto flags = TRY(regexp.as_object().get("flags"));
             auto flags_object = TRY(require_object_coercible(global_object, flags));
             auto flags_string = TRY(flags_object.to_string(global_object));
-            if (!flags_string.contains("g"))
+            if (!flags_string.contains('g'))
                 return vm.throw_completion<TypeError>(global_object, ErrorType::StringNonGlobalRegExp);
         }
         if (auto* matcher = TRY(regexp.get_method(global_object, *vm.well_known_symbol_match_all())))
@@ -885,7 +885,7 @@ JS_DEFINE_NATIVE_FUNCTION(StringPrototype::replace_all)
             auto flags = TRY(search_value.as_object().get(vm.names.flags));
             auto flags_object = TRY(require_object_coercible(global_object, flags));
             auto flags_string = TRY(flags_object.to_string(global_object));
-            if (!flags_string.contains("g"))
+            if (!flags_string.contains('g'))
                 return vm.throw_completion<TypeError>(global_object, ErrorType::StringNonGlobalRegExp);
         }
 

+ 1 - 1
Userland/Libraries/LibLine/Editor.cpp

@@ -1718,7 +1718,7 @@ String Style::to_string() const
                 : "ReplaceEachCodePointInSelection");
     }
 
-    builder.append("}");
+    builder.append('}');
 
     return builder.build();
 }

+ 2 - 2
Userland/Libraries/LibMarkdown/List.cpp

@@ -27,7 +27,7 @@ String List::render_to_html(bool) const
     for (auto& item : m_items) {
         builder.append("<li>"sv);
         if (!m_is_tight || (item->blocks().size() != 0 && !dynamic_cast<Paragraph const*>(&(item->blocks()[0]))))
-            builder.append("\n");
+            builder.append('\n');
         builder.append(item->render_to_html(m_is_tight));
         builder.append("</li>\n"sv);
     }
@@ -47,7 +47,7 @@ String List::render_for_terminal(size_t) const
         if (m_is_ordered)
             builder.appendff("{}.", ++i);
         else
-            builder.append("*");
+            builder.append('*');
         builder.append(item->render_for_terminal());
     }
 

+ 4 - 4
Userland/Libraries/LibMarkdown/Table.cpp

@@ -42,10 +42,10 @@ String Table::render_for_terminal(size_t view_width) const
         write_aligned(col.header, width, col.alignment);
     }
 
-    builder.append("\n");
+    builder.append('\n');
     for (size_t i = 0; i < view_width; ++i)
         builder.append('-');
-    builder.append("\n");
+    builder.append('\n');
 
     for (size_t i = 0; i < m_row_count; ++i) {
         bool first = true;
@@ -60,10 +60,10 @@ String Table::render_for_terminal(size_t view_width) const
             size_t width = col.relative_width * unit_width_length;
             write_aligned(cell, width, col.alignment);
         }
-        builder.append("\n");
+        builder.append('\n');
     }
 
-    builder.append("\n");
+    builder.append('\n');
 
     return builder.to_string();
 }

+ 3 - 3
Userland/Libraries/LibMarkdown/Text.cpp

@@ -108,7 +108,7 @@ void Text::TextNode::render_to_html(StringBuilder& builder) const
 void Text::TextNode::render_for_terminal(StringBuilder& builder) const
 {
     if (collapsible && (text == "\n" || text.is_whitespace())) {
-        builder.append(" ");
+        builder.append(' ');
     } else {
         builder.append(text);
     }
@@ -546,7 +546,7 @@ NonnullOwnPtr<Text::Node> Text::parse_code(Vector<Token>::ConstIterator& tokens)
             if (!is_all_whitespace) {
                 auto& first = dynamic_cast<TextNode&>(code->children.first());
                 auto& last = dynamic_cast<TextNode&>(code->children.last());
-                if (first.text.starts_with(" ") && last.text.ends_with(" ")) {
+                if (first.text.starts_with(' ') && last.text.ends_with(' ')) {
                     first.text = first.text.substring(1);
                     last.text = last.text.substring(0, last.text.length() - 1);
                 }
@@ -608,7 +608,7 @@ NonnullOwnPtr<Text::Node> Text::parse_strike_through(Vector<Token>::ConstIterato
             if (!is_all_whitespace) {
                 auto& first = dynamic_cast<TextNode&>(striked_text->children.first());
                 auto& last = dynamic_cast<TextNode&>(striked_text->children.last());
-                if (first.text.starts_with(" ") && last.text.ends_with(" ")) {
+                if (first.text.starts_with(' ') && last.text.ends_with(' ')) {
                     first.text = first.text.substring(1);
                     last.text = last.text.substring(0, last.text.length() - 1);
                 }

+ 2 - 2
Userland/Libraries/LibPDF/Renderer.h

@@ -172,7 +172,7 @@ struct Formatter<PDF::LineDashPattern> : Formatter<StringView> {
     ErrorOr<void> format(FormatBuilder& format_builder, PDF::LineDashPattern const& pattern)
     {
         StringBuilder builder;
-        builder.append("[");
+        builder.append('[');
         bool first = true;
 
         for (auto& i : pattern.pattern) {
@@ -248,7 +248,7 @@ struct Formatter<PDF::GraphicsState> : Formatter<StringView> {
         builder.appendff("  miter_limit={}\n", state.miter_limit);
         builder.appendff("  line_dash_pattern={}\n", state.line_dash_pattern);
         builder.appendff("  text_state={}\n", state.text_state);
-        builder.append("}");
+        builder.append('}');
         return format_builder.put_string(builder.to_string());
     }
 };

+ 1 - 1
Userland/Libraries/LibSQL/Serializer.h

@@ -163,7 +163,7 @@ private:
             bytes.append(String::formatted("{0:02x}", *(ptr + ix)));
         }
         StringBuilder bytes_builder;
-        bytes_builder.join(" ", bytes);
+        bytes_builder.join(' ', bytes);
         builder.append(bytes_builder.to_string());
         dbgln(builder.to_string());
     }

+ 1 - 1
Userland/Libraries/LibSQL/TreeNode.cpp

@@ -380,7 +380,7 @@ void TreeNode::dump_if(int flag, String&& msg)
     if (is_leaf()) {
         builder.append(", leaf"sv);
     }
-    builder.append(")");
+    builder.append(')');
     dbgln(builder.build());
 }
 

+ 1 - 1
Userland/Libraries/LibSQL/TupleDescriptor.h

@@ -97,7 +97,7 @@ public:
         for (auto& element : *this) {
             elements.append(element.to_string());
         }
-        return String::formatted("[\n{}\n]", String::join("\n", elements));
+        return String::formatted("[\n{}\n]", String::join('\n', elements));
     }
 
     using Vector<TupleElementDescriptor>::operator==;

+ 2 - 2
Userland/Libraries/LibSQL/Value.cpp

@@ -874,11 +874,11 @@ Vector<String> ContainerValueImpl::to_string_vector() const
 String ContainerValueImpl::to_string() const
 {
     StringBuilder builder;
-    builder.append("(");
+    builder.append('(');
     StringBuilder joined;
     joined.join(", "sv, to_string_vector());
     builder.append(joined.string_view());
-    builder.append(")");
+    builder.append(')');
     return builder.build();
 }
 

+ 2 - 2
Userland/Libraries/LibVT/Terminal.cpp

@@ -1448,7 +1448,7 @@ void Terminal::unimplemented_csi_sequence(Parameters parameters, Intermediates i
         builder.append(", parameters: ["sv);
         for (size_t i = 0; i < parameters.size(); ++i)
             builder.appendff("{}{}", (i == 0) ? "" : ", ", parameters[i]);
-        builder.append("]");
+        builder.append("]"sv);
     }
     if (!intermediates.is_empty()) {
         builder.append(", intermediates:"sv);
@@ -1469,7 +1469,7 @@ void Terminal::unimplemented_osc_sequence(OscParameters parameters, u8 last_byte
         builder.append('[');
         for (auto character : parameter)
             builder.append((char)character);
-        builder.append("]");
+        builder.append(']');
         first = false;
     }
 

+ 1 - 1
Userland/Libraries/LibWasm/AbstractMachine/Validator.h

@@ -305,7 +305,7 @@ private:
                     break;
                 }
             }
-            builder.append("]");
+            builder.append(']');
             return { builder.to_string() };
         }
 

+ 1 - 1
Userland/Libraries/LibWeb/CSS/Parser/Block.cpp

@@ -22,7 +22,7 @@ String Block::to_string() const
     StringBuilder builder;
 
     builder.append(m_token.bracket_string());
-    builder.join(" ", m_values);
+    builder.join(' ', m_values);
     builder.append(m_token.bracket_mirror_string());
 
     return builder.to_string();

+ 3 - 3
Userland/Libraries/LibWeb/CSS/Parser/Function.cpp

@@ -23,9 +23,9 @@ String Function::to_string() const
     StringBuilder builder;
 
     serialize_an_identifier(builder, m_name);
-    builder.append("(");
-    builder.join(" ", m_values);
-    builder.append(")");
+    builder.append('(');
+    builder.join(' ', m_values);
+    builder.append(')');
 
     return builder.to_string();
 }

+ 1 - 1
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -2513,7 +2513,7 @@ Optional<StyleProperty> Parser::convert_to_style_property(Declaration const& dec
             property_id = PropertyID::Custom;
         } else if (has_ignored_vendor_prefix(property_name)) {
             return {};
-        } else if (!property_name.starts_with("-")) {
+        } else if (!property_name.starts_with('-')) {
             dbgln_if(CSS_PARSER_DEBUG, "Unrecognized CSS property '{}'", property_name);
             return {};
         }

+ 2 - 2
Userland/Libraries/LibWeb/CSS/Parser/Rule.cpp

@@ -25,11 +25,11 @@ String Rule::to_string() const
     StringBuilder builder;
 
     if (is_at_rule()) {
-        builder.append("@");
+        builder.append('@');
         serialize_an_identifier(builder, m_at_rule_name);
     }
 
-    builder.join(" ", m_prelude);
+    builder.join(' ', m_prelude);
 
     if (m_block)
         builder.append(m_block->to_string());

+ 1 - 1
Userland/Libraries/LibWeb/CSS/Selector.h

@@ -58,7 +58,7 @@ public:
                 // 3.
                 // - A is 1: Append "n" to result.
                 if (step_size == 1)
-                    result.append("n");
+                    result.append('n');
                 // - A is -1: Append "-n" to result.
                 else if (step_size == -1)
                     result.append("-n"sv);

+ 2 - 2
Userland/Libraries/LibWeb/HTML/Parser/HTMLEncodingDetection.cpp

@@ -72,7 +72,7 @@ Optional<StringView> extract_character_encoding_from_meta_element(String const&
         return {};
 
     if (lexer.consume_specific('"')) {
-        auto matching_double_quote = lexer.remaining().find("\"");
+        auto matching_double_quote = lexer.remaining().find('"');
         if (!matching_double_quote.has_value())
             return {};
 
@@ -81,7 +81,7 @@ Optional<StringView> extract_character_encoding_from_meta_element(String const&
     }
 
     if (lexer.consume_specific('\'')) {
-        auto matching_single_quote = lexer.remaining().find("'");
+        auto matching_single_quote = lexer.remaining().find('\'');
         if (!matching_single_quote.has_value())
             return {};
 

+ 1 - 1
Userland/Libraries/LibWeb/HTML/WorkerDebugConsoleClient.cpp

@@ -53,7 +53,7 @@ JS::ThrowCompletionOr<JS::Value> WorkerDebugConsoleClient::printer(JS::Console::
         return JS::js_undefined();
     }
 
-    auto output = String::join(" ", arguments.get<JS::MarkedVector<JS::Value>>());
+    auto output = String::join(' ', arguments.get<JS::MarkedVector<JS::Value>>());
     m_console.output_debug_message(log_level, output);
 
     switch (log_level) {

+ 1 - 1
Userland/Libraries/LibWeb/Origin.h

@@ -85,7 +85,7 @@ public:
 
         // 5. If origin's port is non-null, append a U+003A COLON character (:), and origin's port, serialized, to result.
         if (port() != 0) {
-            result.append(":");
+            result.append(':');
             result.append(String::number(port()));
         }
         // 6. Return result

+ 2 - 2
Userland/Libraries/LibWebSocket/ConnectionInfo.cpp

@@ -27,12 +27,12 @@ String ConnectionInfo::resource_name() const
     StringBuilder builder;
     // "/" if the path component is empty
     if (m_url.path().is_empty())
-        builder.append("/");
+        builder.append('/');
     // The path component
     builder.append(m_url.path());
     // "?" if the query component is non-empty
     if (!m_url.query().is_empty())
-        builder.append("?");
+        builder.append('?');
     // the query component
     builder.append(m_url.query());
     return builder.to_string();

+ 84 - 84
Userland/Libraries/LibX86/Instruction.cpp

@@ -1641,35 +1641,35 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
     case OP_RM8_imm8:
         append_mnemonic_space();
         append_rm8();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_RM16_imm8:
         append_mnemonic_space();
         append_rm16();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_RM32_imm8:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_reg16_RM16_imm8:
         append_mnemonic_space();
         append_reg16();
-        append(",");
+        append(',');
         append_rm16();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_reg32_RM32_imm8:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_rm32();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_AL_imm8:
@@ -1724,23 +1724,23 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
     case OP_reg16_imm16:
         append_mnemonic_space();
         append_reg16();
-        append(",");
+        append(',');
         append_imm16();
         break;
     case OP_reg16_RM16_imm16:
         append_mnemonic_space();
         append_reg16();
-        append(",");
+        append(',');
         append_rm16();
-        append(",");
+        append(',');
         append_imm16();
         break;
     case OP_reg32_RM32_imm32:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_rm32();
-        append(",");
+        append(',');
         append_imm32();
         break;
     case OP_imm32:
@@ -1960,142 +1960,142 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
     case OP_RM8_reg8:
         append_mnemonic_space();
         append_rm8();
-        append(",");
+        append(',');
         append_reg8();
         break;
     case OP_RM16_reg16:
         append_mnemonic_space();
         append_rm16();
-        append(",");
+        append(',');
         append_reg16();
         break;
     case OP_RM32_reg32:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_reg32();
         break;
     case OP_reg8_RM8:
         append_mnemonic_space();
         append_reg8();
-        append(",");
+        append(',');
         append_rm8();
         break;
     case OP_reg16_RM16:
         append_mnemonic_space();
         append_reg16();
-        append(",");
+        append(',');
         append_rm16();
         break;
     case OP_reg32_RM32:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_rm32();
         break;
     case OP_reg32_RM16:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_rm16();
         break;
     case OP_reg16_RM8:
         append_mnemonic_space();
         append_reg16();
-        append(",");
+        append(',');
         append_rm8();
         break;
     case OP_reg32_RM8:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_rm8();
         break;
     case OP_RM16_imm16:
         append_mnemonic_space();
         append_rm16();
-        append(",");
+        append(',');
         append_imm16();
         break;
     case OP_RM32_imm32:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_imm32();
         break;
     case OP_RM16_seg:
         append_mnemonic_space();
         append_rm16();
-        append(",");
+        append(',');
         append_seg();
         break;
     case OP_RM32_seg:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_seg();
         break;
     case OP_seg_RM16:
         append_mnemonic_space();
         append_seg();
-        append(",");
+        append(',');
         append_rm16();
         break;
     case OP_seg_RM32:
         append_mnemonic_space();
         append_seg();
-        append(",");
+        append(',');
         append_rm32();
         break;
     case OP_reg16_mem16:
         append_mnemonic_space();
         append_reg16();
-        append(",");
+        append(',');
         append_rm16();
         break;
     case OP_reg32_mem32:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_rm32();
         break;
     case OP_FAR_mem16:
         append_mnemonic_space();
-        append("far ");
+        append("far "sv);
         append_rm16();
         break;
     case OP_FAR_mem32:
         append_mnemonic_space();
-        append("far ");
+        append("far "sv);
         append_rm32();
         break;
     case OP_reg32_CR:
         append_mnemonic_space();
         builder.append(register_name(static_cast<RegisterIndex32>(modrm().rm())));
-        append(",");
+        append(',');
         append_creg();
         break;
     case OP_CR_reg32:
         append_mnemonic_space();
         append_creg();
-        append(",");
+        append(',');
         builder.append(register_name(static_cast<RegisterIndex32>(modrm().rm())));
         break;
     case OP_reg32_DR:
         append_mnemonic_space();
         builder.append(register_name(static_cast<RegisterIndex32>(modrm().rm())));
-        append(",");
+        append(',');
         append_dreg();
         break;
     case OP_DR_reg32:
         append_mnemonic_space();
         append_dreg();
-        append(",");
+        append(',');
         builder.append(register_name(static_cast<RegisterIndex32>(modrm().rm())));
         break;
     case OP_short_imm8:
         append_mnemonic_space();
-        append("short ");
+        append("short "sv);
         append_relative_imm8();
         break;
     case OP_relimm16:
@@ -2108,38 +2108,38 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
         break;
     case OP_NEAR_imm:
         append_mnemonic_space();
-        append("near ");
+        append("near "sv);
         append_relative_addr();
         break;
     case OP_RM16_reg16_imm8:
         append_mnemonic_space();
         append_rm16();
-        append(",");
+        append(',');
         append_reg16();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_RM32_reg32_imm8:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_reg32();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_RM16_reg16_CL:
         append_mnemonic_space();
         append_rm16();
-        append(",");
+        append(',');
         append_reg16();
-        append(", cl");
+        append(", cl"sv);
         break;
     case OP_RM32_reg32_CL:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_reg32();
-        append(",cl");
+        append(",cl"sv);
         break;
     case OP_reg:
         append_mnemonic_space();
@@ -2155,66 +2155,66 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
     case OP_mm1_imm8:
         append_mnemonic_space();
         append_mm_or_xmm();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_mm1_mm2m32:
         append_mnemonic_space();
         append_mm_or_xmm();
-        append(",");
+        append(',');
         append_mm_or_xmm_or_mem();
         break;
     case OP_mm1_rm32:
         append_mnemonic_space();
         append_mm_or_xmm();
-        append(",");
+        append(',');
         append_rm32();
         break;
     case OP_rm32_mm2:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_mm_or_xmm();
         break;
     case OP_mm1_mm2m64:
         append_mnemonic_space();
         append_mm_or_xmm();
-        append(",");
+        append(',');
         append_mm_or_xmm_or_mem();
         break;
     case OP_mm1m64_mm2:
         append_mnemonic_space();
         append_mm_or_xmm_or_mem();
-        append(",");
+        append(',');
         append_mm_or_xmm();
         break;
     case OP_mm1_mm2m64_imm8:
         append_mnemonic_space();
         append_mm_or_xmm();
-        append(",");
+        append(',');
         append_mm_or_xmm_or_mem();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_reg_mm1:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_mm_or_xmm();
         break;
     case OP_reg_mm1_imm8:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_mm_or_xmm_or_mem();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_mm1_r32m16_imm8:
         append_mnemonic_space();
         append_mm_or_xmm();
         append_rm32(); // FIXME: r32m16
-        append(",");
+        append(',');
         append_imm8();
         break;
     case __SSE:
@@ -2222,150 +2222,150 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
     case OP_xmm_mm:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_mmrm32(); // FIXME: No Memmory
         break;
     case OP_mm1_xmm2m128:
     case OP_mm_xmm:
         append_mnemonic_space();
         append_mm();
-        append(",");
+        append(',');
         append_xmmrm32(); // FIXME: No Memmory
         break;
     case OP_xmm1_imm8:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_xmm1_xmm2m32:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_xmmrm32();
         break;
     case OP_xmm1_xmm2m64:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_xmmrm64();
         break;
     case OP_xmm1_xmm2m128:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_xmmrm128();
         break;
     case OP_xmm1_xmm2m32_imm8:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_xmmrm32();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_xmm1_xmm2m128_imm8:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_xmmrm32();
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_xmm1m32_xmm2:
         append_mnemonic_space();
         append_xmmrm32();
-        append(",");
+        append(',');
         append_xmm();
         break;
     case OP_xmm1m64_xmm2:
         append_mnemonic_space();
         append_xmmrm64();
-        append(",");
+        append(',');
         append_xmm();
         break;
     case OP_xmm1m128_xmm2:
         append_mnemonic_space();
         append_xmmrm128();
-        append(",");
+        append(',');
         append_xmm();
         break;
     case OP_reg_xmm1:
     case OP_r32_xmm2m64:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_xmmrm128(); // second entry in the rm byte
         break;
     case OP_rm32_xmm2:
         append_mnemonic_space();
         append_rm32();
-        append(",");
+        append(',');
         append_xmm();
         break;
     case OP_reg_xmm1_imm8:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_xmmrm128(); // second entry in the rm byte
-        append(",");
+        append(',');
         append_imm8();
         break;
     case OP_xmm1_rm32:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_rm32(); // second entry in the rm byte
         break;
     case OP_xmm1_m64:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_rm64(); // second entry in the rm byte
         break;
 
     case OP_m64_xmm2:
         append_mnemonic_space();
         append_rm64(); // second entry in the rm byte
-        append(",");
+        append(',');
         append_xmm();
         break;
     case OP_rm8_xmm2m32:
         append_mnemonic_space();
         append_rm8();
-        append(",");
+        append(',');
         append_xmmrm32();
         break;
     case OP_xmm1_mm2m64:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_mmrm64();
         break;
     case OP_mm1m64_xmm2:
         append_mnemonic_space();
         append_mmrm64();
-        append(",");
+        append(',');
         append_xmm();
         break;
     case OP_mm1_xmm2m64:
         append_mnemonic_space();
         append_mm();
-        append(",");
+        append(',');
         append_xmmrm64();
         break;
     case OP_r32_xmm2m32:
         append_mnemonic_space();
         append_reg32();
-        append(",");
+        append(',');
         append_xmmrm32();
         break;
     case OP_xmm1_r32m16_imm8:
         append_mnemonic_space();
         append_xmm();
-        append(",");
+        append(',');
         append_rm32(); // FIXME: r32m16
-        append(",");
+        append(',');
         append_imm8();
         break;
     case InstructionPrefix:

+ 1 - 1
Userland/Services/FileOperation/main.cpp

@@ -355,7 +355,7 @@ String deduplicate_destination_file_name(String const& destination)
     StringBuilder basename;
     basename.appendff("{}-{}", title_without_counter, next_counter);
     if (!destination_path.extension().is_empty()) {
-        basename.append(".");
+        basename.append('.');
         basename.append(destination_path.extension());
     }
 

+ 1 - 1
Userland/Services/Taskbar/QuickLaunchWidget.cpp

@@ -112,7 +112,7 @@ QuickLaunchWidget::QuickLaunchWidget()
 
 OwnPtr<QuickLaunchEntry> QuickLaunchEntry::create_from_config_value(StringView value)
 {
-    if (!value.starts_with("/") && value.ends_with(".af"sv)) {
+    if (!value.starts_with('/') && value.ends_with(".af"sv)) {
         auto af_path = String::formatted("{}/{}", Desktop::AppFile::APP_FILES_DIRECTORY, value);
         return make<QuickLaunchEntryAppFile>(Desktop::AppFile::open(af_path));
     }

+ 1 - 1
Userland/Services/WebServer/Client.cpp

@@ -130,7 +130,7 @@ ErrorOr<bool> Client::handle_request(ReadonlyBytes raw_request)
 
     if (Core::File::is_directory(real_path)) {
 
-        if (!request.resource().ends_with("/")) {
+        if (!request.resource().ends_with('/')) {
             StringBuilder red;
 
             red.append(requested_path);

+ 8 - 8
Userland/Shell/AST.cpp

@@ -2665,7 +2665,7 @@ RefPtr<Value> ReadRedirection::run(RefPtr<Shell> shell)
         return make_ref_counted<ListValue>({});
 
     StringBuilder builder;
-    builder.join(" ", path_segments);
+    builder.join(' ', path_segments);
 
     command.redirections.append(PathRedirection::create(builder.to_string(), m_fd, PathRedirection::Read));
     return make_ref_counted<CommandValue>(move(command));
@@ -2695,7 +2695,7 @@ RefPtr<Value> ReadWriteRedirection::run(RefPtr<Shell> shell)
         return make_ref_counted<ListValue>({});
 
     StringBuilder builder;
-    builder.join(" ", path_segments);
+    builder.join(' ', path_segments);
 
     command.redirections.append(PathRedirection::create(builder.to_string(), m_fd, PathRedirection::ReadWrite));
     return make_ref_counted<CommandValue>(move(command));
@@ -3052,7 +3052,7 @@ void Juxtaposition::highlight_in_editor(Line::Editor& editor, Shell& shell, High
 
         StringBuilder path_builder;
         path_builder.append(tilde_value);
-        path_builder.append("/");
+        path_builder.append('/');
         path_builder.append(bareword_value);
         auto path = path_builder.to_string();
 
@@ -3183,8 +3183,8 @@ RefPtr<Value> StringPartCompose::run(RefPtr<Shell> shell)
         return make_ref_counted<ListValue>({});
 
     StringBuilder builder;
-    builder.join(" ", left);
-    builder.join(" ", right);
+    builder.join(' ', left);
+    builder.join(' ', right);
 
     return make_ref_counted<StringValue>(builder.to_string());
 }
@@ -3347,7 +3347,7 @@ RefPtr<Value> WriteAppendRedirection::run(RefPtr<Shell> shell)
         return make_ref_counted<ListValue>({});
 
     StringBuilder builder;
-    builder.join(" ", path_segments);
+    builder.join(' ', path_segments);
 
     command.redirections.append(PathRedirection::create(builder.to_string(), m_fd, PathRedirection::WriteAppend));
     return make_ref_counted<CommandValue>(move(command));
@@ -3377,7 +3377,7 @@ RefPtr<Value> WriteRedirection::run(RefPtr<Shell> shell)
         return make_ref_counted<ListValue>({});
 
     StringBuilder builder;
-    builder.join(" ", path_segments);
+    builder.join(' ', path_segments);
 
     command.redirections.append(PathRedirection::create(builder.to_string(), m_fd, PathRedirection::Write));
     return make_ref_counted<CommandValue>(move(command));
@@ -3724,7 +3724,7 @@ String TildeValue::resolve_as_string(RefPtr<Shell> shell)
 Vector<String> TildeValue::resolve_as_list(RefPtr<Shell> shell)
 {
     StringBuilder builder;
-    builder.append("~");
+    builder.append('~');
     builder.append(m_username);
 
     if (!shell)

+ 3 - 3
Userland/Shell/Builtin.cpp

@@ -207,11 +207,11 @@ int Shell::builtin_type(int argc, char const** argv)
             if (!dont_show_function_source) {
                 StringBuilder builder;
                 builder.append(fn.name);
-                builder.append("(");
+                builder.append('(');
                 for (size_t i = 0; i < fn.arguments.size(); i++) {
                     builder.append(fn.arguments[i]);
                     if (!(i == fn.arguments.size() - 1))
-                        builder.append(" ");
+                        builder.append(' ');
                 }
                 builder.append(") {\n"sv);
                 if (fn.body) {
@@ -448,7 +448,7 @@ int Shell::builtin_export(int argc, char const** argv)
             if (value) {
                 auto values = value->resolve_as_list(*this);
                 StringBuilder builder;
-                builder.join(" ", values);
+                builder.join(' ', values);
                 parts.append(builder.to_string());
             } else {
                 // Ignore the export.

+ 1 - 1
Userland/Shell/Formatter.cpp

@@ -41,7 +41,7 @@ String Formatter::format()
 
     auto string = current_builder().string_view();
 
-    if (!string.ends_with(" "))
+    if (!string.ends_with(' '))
         current_builder().append(m_trivia);
 
     return current_builder().to_string();

+ 1 - 1
Userland/Shell/Parser.cpp

@@ -1969,7 +1969,7 @@ RefPtr<AST::Node> Parser::parse_glob()
                 textbuilder.append(bareword->text());
             } else if (glob_after->is_tilde()) {
                 auto bareword = static_cast<AST::Tilde*>(glob_after.ptr());
-                textbuilder.append("~");
+                textbuilder.append('~');
                 textbuilder.append(bareword->text());
             } else {
                 return create<AST::SyntaxError>(String::formatted("Invalid node '{}' in glob position, escape shell special characters", glob_after->class_name()));

+ 2 - 2
Userland/Shell/Shell.cpp

@@ -390,7 +390,7 @@ String Shell::local_variable_or(StringView name, String const& replacement) cons
     auto value = lookup_local_variable(name);
     if (value) {
         StringBuilder builder;
-        builder.join(" ", value->resolve_as_list(*this));
+        builder.join(' ', value->resolve_as_list(*this));
         return builder.to_string();
     }
     return replacement;
@@ -839,7 +839,7 @@ ErrorOr<RefPtr<Job>> Shell::run_command(const AST::Command& command)
     close(sync_pipe[1]);
 
     StringBuilder cmd;
-    cmd.join(" ", command.argv);
+    cmd.join(' ', command.argv);
 
     auto command_copy = AST::Command(command);
     // Clear the next chain if it's to be immediately executed

+ 1 - 1
Userland/Shell/SyntaxHighlighter.cpp

@@ -128,7 +128,7 @@ private:
             span.attributes.color = m_palette.syntax_keyword();
             span.attributes.bold = true;
             m_is_first_in_command = false;
-        } else if (node->text().starts_with("-")) {
+        } else if (node->text().starts_with('-')) {
             span.attributes.color = m_palette.syntax_preprocessor_statement();
         } else {
             span.attributes.color = m_palette.base_text();

+ 1 - 1
Userland/Utilities/cpp-preprocessor.cpp

@@ -34,7 +34,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
             if (definition.value.parameters.is_empty())
                 outln("{}: {}", definition.key, definition.value.value);
             else
-                outln("{}({}): {}", definition.key, String::join(",", definition.value.parameters), definition.value.value);
+                outln("{}({}): {}", definition.key, String::join(',', definition.value.parameters), definition.value.value);
         }
         outln("");
     }

+ 3 - 3
Userland/Utilities/diff.cpp

@@ -41,11 +41,11 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
 
         // Action
         if (num_added > 0 && num_removed > 0)
-            sb.append("c");
+            sb.append('c');
         else if (num_added > 0)
-            sb.append("a");
+            sb.append('a');
         else
-            sb.append("d");
+            sb.append('d');
 
         // Target line(s)
         sb.appendff("{}", target_start);

+ 1 - 1
Userland/Utilities/js.cpp

@@ -1449,7 +1449,7 @@ public:
             return JS::js_undefined();
         }
 
-        auto output = String::join(" ", arguments.get<JS::MarkedVector<JS::Value>>());
+        auto output = String::join(' ', arguments.get<JS::MarkedVector<JS::Value>>());
         m_console.output_debug_message(log_level, output);
 
         switch (log_level) {

+ 2 - 2
Userland/Utilities/mkdir.cpp

@@ -54,7 +54,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
         }
         StringBuilder path_builder;
         if (lexical_path.is_absolute())
-            path_builder.append("/");
+            path_builder.append('/');
 
         auto& parts = lexical_path.parts_view();
         size_t num_parts = parts.size();
@@ -88,7 +88,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
                     break;
                 }
             }
-            path_builder.append("/");
+            path_builder.append('/');
         }
     }
     return has_errors ? 1 : 0;

+ 1 - 1
Userland/Utilities/mount.cpp

@@ -70,7 +70,7 @@ static int get_source_fd(StringView source)
 static bool mount_by_line(String const& line)
 {
     // Skip comments and blank lines.
-    if (line.is_empty() || line.starts_with("#"))
+    if (line.is_empty() || line.starts_with('#'))
         return true;
 
     Vector<String> parts = line.split('\t');

+ 1 - 1
Userland/Utilities/stty.cpp

@@ -205,7 +205,7 @@ void print_human_readable(termios const& modes, winsize const& ws, bool verbose_
     auto escape_character = [&](u8 ch) {
         StringBuilder sb;
         if (ch <= 0x20) {
-            sb.append("^");
+            sb.append('^');
             sb.append(ch + 0x40);
         } else if (ch == 0x7f) {
             sb.append("^?"sv);

+ 1 - 1
Userland/Utilities/telws.cpp

@@ -93,7 +93,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
         if (line.is_empty())
             continue;
 
-        if (line.starts_with(".")) {
+        if (line.starts_with('.')) {
             if (line.starts_with(".text "sv)) {
                 editor->add_to_history(line);
                 if (socket->ready_state() != Protocol::WebSocket::ReadyState::Open) {

+ 1 - 1
Userland/Utilities/xargs.cpp

@@ -197,7 +197,7 @@ bool run_command(Vector<char*>&& child_argv, bool verbose, bool is_stdin, int de
 
     if (verbose) {
         StringBuilder builder;
-        builder.join(" ", child_argv);
+        builder.join(' ', child_argv);
         warnln("xargs: {}", builder.to_string());
     }
 

+ 2 - 2
Userland/Utilities/xml.cpp

@@ -424,10 +424,10 @@ static void do_run_tests(XML::Document& document)
 
             StringBuilder path_builder;
             path_builder.append(base_path);
-            path_builder.append("/");
+            path_builder.append('/');
             for (auto& entry : bases.in_reverse()) {
                 path_builder.append(entry);
-                path_builder.append("/");
+                path_builder.append('/');
             }
             auto test_base_path = path_builder.to_string();