Browse Source

Merge pull request #50809 from akien-mga/iterators-const-references

Rémi Verschelde 4 years ago
parent
commit
ff0b5f8fa1
100 changed files with 413 additions and 413 deletions
  1. 1 1
      core/config/engine.cpp
  2. 2 2
      core/config/project_settings.cpp
  3. 10 10
      core/core_bind.cpp
  4. 1 1
      core/debugger/debugger_marshalls.cpp
  5. 1 1
      core/debugger/remote_debugger.cpp
  6. 12 12
      core/extension/extension_api_dump.cpp
  7. 1 1
      core/extension/native_extension.cpp
  8. 1 1
      core/input/input.cpp
  9. 2 2
      core/input/input_map.cpp
  10. 3 3
      core/io/dir_access.cpp
  11. 1 1
      core/io/image_loader.cpp
  12. 1 1
      core/io/ip.cpp
  13. 1 1
      core/io/json.cpp
  14. 3 3
      core/io/marshalls.cpp
  15. 1 1
      core/io/multiplayer_api.cpp
  16. 2 2
      core/io/packed_data_container.cpp
  17. 5 5
      core/io/resource.cpp
  18. 10 11
      core/io/resource_format_binary.cpp
  19. 4 4
      core/io/resource_importer.cpp
  20. 3 3
      core/io/resource_loader.cpp
  21. 2 2
      core/io/resource_saver.cpp
  22. 2 2
      core/math/quick_hull.cpp
  23. 16 14
      core/object/class_db.cpp
  24. 7 7
      core/object/object.cpp
  25. 6 6
      core/object/script_language.cpp
  26. 1 1
      core/string/optimized_translation.cpp
  27. 1 1
      core/string/translation.cpp
  28. 6 6
      core/string/translation_po.cpp
  29. 1 1
      core/string/ustring.cpp
  30. 1 1
      core/variant/callable.cpp
  31. 1 1
      core/variant/variant.cpp
  32. 2 2
      core/variant/variant_call.cpp
  33. 1 1
      core/variant/variant_parser.cpp
  34. 2 2
      core/variant/variant_setget.cpp
  35. 1 1
      core/variant/variant_utility.cpp
  36. 1 1
      drivers/unix/net_socket_posix.cpp
  37. 2 2
      drivers/vulkan/rendering_device_vulkan.cpp
  38. 2 2
      editor/animation_bezier_editor.cpp
  39. 6 6
      editor/animation_track_editor.cpp
  40. 1 1
      editor/code_editor.cpp
  41. 1 1
      editor/connections_dialog.cpp
  42. 1 1
      editor/create_dialog.cpp
  43. 1 1
      editor/debugger/script_editor_debugger.cpp
  44. 4 4
      editor/dependency_editor.cpp
  45. 16 16
      editor/doc_tools.cpp
  46. 2 2
      editor/editor_audio_buses.cpp
  47. 9 9
      editor/editor_autoload_settings.cpp
  48. 6 6
      editor/editor_data.cpp
  49. 7 7
      editor/editor_export.cpp
  50. 2 2
      editor/editor_feature_profile.cpp
  51. 1 1
      editor/editor_file_dialog.cpp
  52. 16 16
      editor/editor_file_system.cpp
  53. 2 2
      editor/editor_folding.cpp
  54. 3 3
      editor/editor_inspector.cpp
  55. 1 1
      editor/editor_layouts_dialog.cpp
  56. 12 12
      editor/editor_node.cpp
  57. 1 1
      editor/editor_path.cpp
  58. 5 5
      editor/editor_resource_picker.cpp
  59. 2 2
      editor/editor_run.cpp
  60. 4 4
      editor/editor_settings.cpp
  61. 3 3
      editor/filesystem_dock.cpp
  62. 2 2
      editor/groups_editor.cpp
  63. 9 9
      editor/import/resource_importer_scene.cpp
  64. 4 4
      editor/import/scene_import_settings.cpp
  65. 1 1
      editor/import/scene_importer_mesh.cpp
  66. 1 1
      editor/import_defaults_editor.cpp
  67. 10 10
      editor/import_dock.cpp
  68. 1 1
      editor/inspector_dock.cpp
  69. 4 4
      editor/localization_editor.cpp
  70. 2 2
      editor/multi_node_edit.cpp
  71. 3 3
      editor/plugins/animation_blend_space_1d_editor.cpp
  72. 3 3
      editor/plugins/animation_blend_space_2d_editor.cpp
  73. 10 10
      editor/plugins/animation_blend_tree_editor_plugin.cpp
  74. 4 4
      editor/plugins/animation_player_editor_plugin.cpp
  75. 5 5
      editor/plugins/animation_state_machine_editor.cpp
  76. 1 1
      editor/plugins/animation_tree_editor_plugin.cpp
  77. 4 4
      editor/plugins/canvas_item_editor_plugin.cpp
  78. 1 1
      editor/plugins/cpu_particles_2d_editor_plugin.cpp
  79. 1 1
      editor/plugins/editor_preview_plugins.cpp
  80. 1 1
      editor/plugins/gpu_particles_2d_editor_plugin.cpp
  81. 6 6
      editor/plugins/material_editor_plugin.cpp
  82. 1 1
      editor/plugins/node_3d_editor_gizmos.cpp
  83. 2 2
      editor/plugins/resource_preloader_editor_plugin.cpp
  84. 1 1
      editor/plugins/root_motion_editor_plugin.cpp
  85. 8 8
      editor/plugins/script_editor_plugin.cpp
  86. 11 11
      editor/plugins/script_text_editor.cpp
  87. 2 2
      editor/plugins/shader_editor_plugin.cpp
  88. 1 1
      editor/plugins/sprite_frames_editor_plugin.cpp
  89. 2 2
      editor/plugins/texture_region_editor_plugin.cpp
  90. 35 35
      editor/plugins/theme_editor_plugin.cpp
  91. 1 1
      editor/plugins/tiles/tile_set_atlas_source_editor.cpp
  92. 18 18
      editor/plugins/visual_shader_editor_plugin.cpp
  93. 1 1
      editor/project_export.cpp
  94. 5 5
      editor/project_manager.cpp
  95. 4 4
      editor/project_settings_editor.cpp
  96. 6 6
      editor/property_editor.cpp
  97. 1 1
      editor/property_selector.cpp
  98. 11 12
      editor/scene_tree_dock.cpp
  99. 3 3
      editor/script_create_dialog.cpp
  100. 1 1
      editor/settings_config_dialog.cpp

+ 1 - 1
core/config/engine.cpp

@@ -214,7 +214,7 @@ bool Engine::has_singleton(const String &p_name) const {
 }
 
 void Engine::get_singletons(List<Singleton> *p_singletons) {
-	for (Singleton &E : singletons) {
+	for (const Singleton &E : singletons) {
 		p_singletons->push_back(E);
 	}
 }

+ 2 - 2
core/config/project_settings.cpp

@@ -800,7 +800,7 @@ Error ProjectSettings::_save_settings_text(const String &p_file, const Map<Strin
 		if (E->key() != "") {
 			file->store_string("[" + E->key() + "]\n\n");
 		}
-		for (String &F : E->get()) {
+		for (const String &F : E->get()) {
 			String key = F;
 			if (E->key() != "") {
 				key = E->key() + "/" + key;
@@ -928,7 +928,7 @@ Vector<String> ProjectSettings::get_optimizer_presets() const {
 	ProjectSettings::get_singleton()->get_property_list(&pi);
 	Vector<String> names;
 
-	for (PropertyInfo &E : pi) {
+	for (const PropertyInfo &E : pi) {
 		if (!E.name.begins_with("optimizer_presets/")) {
 			continue;
 		}

+ 10 - 10
core/core_bind.cpp

@@ -75,7 +75,7 @@ Vector<String> _ResourceLoader::get_recognized_extensions_for_type(const String
 	List<String> exts;
 	ResourceLoader::get_recognized_extensions_for_type(p_type, &exts);
 	Vector<String> ret;
-	for (String &E : exts) {
+	for (const String &E : exts) {
 		ret.push_back(E);
 	}
 
@@ -91,7 +91,7 @@ PackedStringArray _ResourceLoader::get_dependencies(const String &p_path) {
 	ResourceLoader::get_dependencies(p_path, &deps);
 
 	PackedStringArray ret;
-	for (String &E : deps) {
+	for (const String &E : deps) {
 		ret.push_back(E);
 	}
 
@@ -141,7 +141,7 @@ Vector<String> _ResourceSaver::get_recognized_extensions(const RES &p_resource)
 	List<String> exts;
 	ResourceSaver::get_recognized_extensions(p_resource, &exts);
 	Vector<String> ret;
-	for (String &E : exts) {
+	for (const String &E : exts) {
 		ret.push_back(E);
 	}
 	return ret;
@@ -268,7 +268,7 @@ String _OS::get_name() const {
 Vector<String> _OS::get_cmdline_args() {
 	List<String> cmdline = OS::get_singleton()->get_cmdline_args();
 	Vector<String> cmdlinev;
-	for (String &E : cmdline) {
+	for (const String &E : cmdline) {
 		cmdlinev.push_back(E);
 	}
 
@@ -1822,7 +1822,7 @@ PackedStringArray _ClassDB::get_class_list() const {
 	PackedStringArray ret;
 	ret.resize(classes.size());
 	int idx = 0;
-	for (StringName &E : classes) {
+	for (const StringName &E : classes) {
 		ret.set(idx++, E);
 	}
 
@@ -1836,7 +1836,7 @@ PackedStringArray _ClassDB::get_inheriters_from_class(const StringName &p_class)
 	PackedStringArray ret;
 	ret.resize(classes.size());
 	int idx = 0;
-	for (StringName &E : classes) {
+	for (const StringName &E : classes) {
 		ret.set(idx++, E);
 	}
 
@@ -1891,7 +1891,7 @@ Array _ClassDB::get_signal_list(StringName p_class, bool p_no_inheritance) const
 	ClassDB::get_signal_list(p_class, &signals, p_no_inheritance);
 	Array ret;
 
-	for (MethodInfo &E : signals) {
+	for (const MethodInfo &E : signals) {
 		ret.push_back(E.operator Dictionary());
 	}
 
@@ -1902,7 +1902,7 @@ Array _ClassDB::get_property_list(StringName p_class, bool p_no_inheritance) con
 	List<PropertyInfo> plist;
 	ClassDB::get_property_list(p_class, &plist, p_no_inheritance);
 	Array ret;
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		ret.push_back(E.operator Dictionary());
 	}
 
@@ -1935,7 +1935,7 @@ Array _ClassDB::get_method_list(StringName p_class, bool p_no_inheritance) const
 	ClassDB::get_method_list(p_class, &methods, p_no_inheritance);
 	Array ret;
 
-	for (MethodInfo &E : methods) {
+	for (const MethodInfo &E : methods) {
 #ifdef DEBUG_METHODS_ENABLED
 		ret.push_back(E.operator Dictionary());
 #else
@@ -1955,7 +1955,7 @@ PackedStringArray _ClassDB::get_integer_constant_list(const StringName &p_class,
 	PackedStringArray ret;
 	ret.resize(constants.size());
 	int idx = 0;
-	for (String &E : constants) {
+	for (const String &E : constants) {
 		ret.set(idx++, E);
 	}
 

+ 1 - 1
core/debugger/debugger_marshalls.cpp

@@ -40,7 +40,7 @@ Array DebuggerMarshalls::ResourceUsage::serialize() {
 
 	Array arr;
 	arr.push_back(infos.size() * 4);
-	for (ResourceInfo &E : infos) {
+	for (const ResourceInfo &E : infos) {
 		arr.push_back(E.path);
 		arr.push_back(E.format);
 		arr.push_back(E.type);

+ 1 - 1
core/debugger/remote_debugger.cpp

@@ -427,7 +427,7 @@ void RemoteDebugger::_send_resource_usage() {
 	List<RS::TextureInfo> tinfo;
 	RS::get_singleton()->texture_debug_usage(&tinfo);
 
-	for (RS::TextureInfo &E : tinfo) {
+	for (const RS::TextureInfo &E : tinfo) {
 		DebuggerMarshalls::ResourceInfo info;
 		info.path = E.path;
 		info.vram = E.bytes;

+ 12 - 12
core/extension/extension_api_dump.cpp

@@ -276,7 +276,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 			Dictionary d1;
 			d1["name"] = E->key();
 			Array values;
-			for (Pair<String, int> &F : E->get()) {
+			for (const Pair<String, int> &F : E->get()) {
 				Dictionary d2;
 				d2["name"] = F.first;
 				d2["value"] = F.second;
@@ -294,7 +294,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 		List<StringName> utility_func_names;
 		Variant::get_utility_function_list(&utility_func_names);
 
-		for (StringName &name : utility_func_names) {
+		for (const StringName &name : utility_func_names) {
 			Dictionary func;
 			func["name"] = String(name);
 			if (Variant::has_utility_function_return_value(name)) {
@@ -362,7 +362,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 
 				List<StringName> member_names;
 				Variant::get_member_list(type, &member_names);
-				for (StringName &member_name : member_names) {
+				for (const StringName &member_name : member_names) {
 					Dictionary d2;
 					d2["name"] = String(member_name);
 					d2["type"] = Variant::get_type_name(Variant::get_member_type(type, member_name));
@@ -378,7 +378,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 
 				List<StringName> constant_names;
 				Variant::get_constants_for_type(type, &constant_names);
-				for (StringName &constant_name : constant_names) {
+				for (const StringName &constant_name : constant_names) {
 					Dictionary d2;
 					d2["name"] = String(constant_name);
 					Variant constant = Variant::get_constant_value(type, constant_name);
@@ -417,7 +417,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 
 				List<StringName> method_names;
 				Variant::get_builtin_method_list(type, &method_names);
-				for (StringName &method_name : method_names) {
+				for (const StringName &method_name : method_names) {
 					Dictionary d2;
 					d2["name"] = String(method_name);
 					if (Variant::has_builtin_method_return_value(type, method_name)) {
@@ -499,7 +499,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 
 		class_list.sort_custom<StringName::AlphCompare>();
 
-		for (StringName &class_name : class_list) {
+		for (const StringName &class_name : class_list) {
 			Dictionary d;
 			d["name"] = String(class_name);
 			d["is_refcounted"] = ClassDB::is_parent_class(class_name, "RefCounted");
@@ -520,7 +520,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 				Array constants;
 				List<String> constant_list;
 				ClassDB::get_integer_constant_list(class_name, &constant_list, true);
-				for (String &F : constant_list) {
+				for (const String &F : constant_list) {
 					StringName enum_name = ClassDB::get_integer_constant_enum(class_name, F);
 					if (enum_name != StringName()) {
 						continue; //enums will be handled on their own
@@ -542,7 +542,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 				Array enums;
 				List<StringName> enum_list;
 				ClassDB::get_enum_list(class_name, &enum_list, true);
-				for (StringName &F : enum_list) {
+				for (const StringName &F : enum_list) {
 					Dictionary d2;
 					d2["name"] = String(F);
 
@@ -570,7 +570,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 				Array methods;
 				List<MethodInfo> method_list;
 				ClassDB::get_method_list(class_name, &method_list, true);
-				for (MethodInfo &F : method_list) {
+				for (const MethodInfo &F : method_list) {
 					StringName method_name = F.name;
 					if (F.flags & METHOD_FLAG_VIRTUAL) {
 						//virtual method
@@ -687,7 +687,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 				Array signals;
 				List<MethodInfo> signal_list;
 				ClassDB::get_signal_list(class_name, &signal_list, true);
-				for (MethodInfo &F : signal_list) {
+				for (const MethodInfo &F : signal_list) {
 					StringName signal_name = F.name;
 					Dictionary d2;
 					d2["name"] = String(signal_name);
@@ -723,7 +723,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 				Array properties;
 				List<PropertyInfo> property_list;
 				ClassDB::get_property_list(class_name, &property_list, true);
-				for (PropertyInfo &F : property_list) {
+				for (const PropertyInfo &F : property_list) {
 					if (F.usage & PROPERTY_USAGE_CATEGORY || F.usage & PROPERTY_USAGE_GROUP || F.usage & PROPERTY_USAGE_SUBGROUP) {
 						continue; //not real properties
 					}
@@ -766,7 +766,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
 		List<Engine::Singleton> singleton_list;
 		Engine::get_singleton()->get_singletons(&singleton_list);
 
-		for (Engine::Singleton &s : singleton_list) {
+		for (const Engine::Singleton &s : singleton_list) {
 			Dictionary d;
 			d["name"] = s.name;
 			if (s.class_name != StringName()) {

+ 1 - 1
core/extension/native_extension.cpp

@@ -351,7 +351,7 @@ RES NativeExtensionResourceLoader::load(const String &p_path, const String &p_or
 
 	String library_path;
 
-	for (String &E : libraries) {
+	for (const String &E : libraries) {
 		Vector<String> tags = E.split(".");
 		bool all_tags_met = true;
 		for (int i = 0; i < tags.size(); i++) {

+ 1 - 1
core/input/input.cpp

@@ -174,7 +174,7 @@ void Input::get_argument_options(const StringName &p_function, int p_idx, List<S
 		List<PropertyInfo> pinfo;
 		ProjectSettings::get_singleton()->get_property_list(&pinfo);
 
-		for (PropertyInfo &pi : pinfo) {
+		for (const PropertyInfo &pi : pinfo) {
 			if (!pi.name.begins_with("input/")) {
 				continue;
 			}

+ 2 - 2
core/input/input_map.cpp

@@ -65,7 +65,7 @@ String InputMap::_suggest_actions(const StringName &p_action) const {
 	float closest_similarity = 0.0;
 
 	// Find the most action with the most similar name.
-	for (StringName &action : actions) {
+	for (const StringName &action : actions) {
 		const float similarity = String(action).similarity(p_action);
 
 		if (similarity > closest_similarity) {
@@ -261,7 +261,7 @@ void InputMap::load_from_project_settings() {
 	List<PropertyInfo> pinfo;
 	ProjectSettings::get_singleton()->get_property_list(&pinfo);
 
-	for (PropertyInfo &pi : pinfo) {
+	for (const PropertyInfo &pi : pinfo) {
 		if (!pi.name.begins_with("input/")) {
 			continue;
 		}

+ 3 - 3
core/io/dir_access.cpp

@@ -93,7 +93,7 @@ static Error _erase_recursive(DirAccess *da) {
 
 	da->list_dir_end();
 
-	for (String &E : dirs) {
+	for (const String &E : dirs) {
 		Error err = da->change_dir(E);
 		if (err == OK) {
 			err = _erase_recursive(da);
@@ -114,7 +114,7 @@ static Error _erase_recursive(DirAccess *da) {
 		}
 	}
 
-	for (String &E : files) {
+	for (const String &E : files) {
 		Error err = da->remove(da->get_current_dir().plus_file(E));
 		if (err) {
 			return err;
@@ -362,7 +362,7 @@ Error DirAccess::_copy_dir(DirAccess *p_target_da, String p_to, int p_chmod_flag
 
 	list_dir_end();
 
-	for (String &rel_path : dirs) {
+	for (const String &rel_path : dirs) {
 		String target_dir = p_to + rel_path;
 		if (!p_target_da->dir_exists(target_dir)) {
 			Error err = p_target_da->make_dir(target_dir);

+ 1 - 1
core/io/image_loader.cpp

@@ -35,7 +35,7 @@
 bool ImageFormatLoader::recognize(const String &p_extension) const {
 	List<String> extensions;
 	get_recognized_extensions(&extensions);
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		if (E.nocasecmp_to(p_extension) == 0) {
 			return true;
 		}

+ 1 - 1
core/io/ip.cpp

@@ -252,7 +252,7 @@ Array IP::_get_local_addresses() const {
 	Array addresses;
 	List<IPAddress> ip_addresses;
 	get_local_addresses(&ip_addresses);
-	for (IPAddress &E : ip_addresses) {
+	for (const IPAddress &E : ip_addresses) {
 		addresses.push_back(E);
 	}
 

+ 1 - 1
core/io/json.cpp

@@ -122,7 +122,7 @@ String JSON::_stringify(const Variant &p_var, const String &p_indent, int p_cur_
 			}
 
 			bool first_key = true;
-			for (Variant &E : keys) {
+			for (const Variant &E : keys) {
 				if (first_key) {
 					first_key = false;
 				} else {

+ 3 - 3
core/io/marshalls.cpp

@@ -1358,7 +1358,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
 					obj->get_property_list(&props);
 
 					int pc = 0;
-					for (PropertyInfo &E : props) {
+					for (const PropertyInfo &E : props) {
 						if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 							continue;
 						}
@@ -1372,7 +1372,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
 
 					r_len += 4;
 
-					for (PropertyInfo &E : props) {
+					for (const PropertyInfo &E : props) {
 						if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 							continue;
 						}
@@ -1418,7 +1418,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
 			List<Variant> keys;
 			d.get_key_list(&keys);
 
-			for (Variant &E : keys) {
+			for (const Variant &E : keys) {
 				/*
 				CharString utf8 = E->->utf8();
 

+ 1 - 1
core/io/multiplayer_api.cpp

@@ -917,7 +917,7 @@ void MultiplayerAPI::_del_peer(int p_id) {
 	// Some refactoring is needed to make this faster and do paths GC.
 	List<NodePath> keys;
 	path_send_cache.get_key_list(&keys);
-	for (NodePath &E : keys) {
+	for (const NodePath &E : keys) {
 		PathSentCache *psc = path_send_cache.getptr(E);
 		psc->confirmed_peers.erase(p_id);
 	}

+ 2 - 2
core/io/packed_data_container.cpp

@@ -268,7 +268,7 @@ uint32_t PackedDataContainer::_pack(const Variant &p_data, Vector<uint8_t> &tmpd
 			d.get_key_list(&keys);
 			List<DictKey> sortk;
 
-			for (Variant &key : keys) {
+			for (const Variant &key : keys) {
 				DictKey dk;
 				dk.hash = key.hash();
 				dk.key = key;
@@ -278,7 +278,7 @@ uint32_t PackedDataContainer::_pack(const Variant &p_data, Vector<uint8_t> &tmpd
 			sortk.sort();
 
 			int idx = 0;
-			for (DictKey &E : sortk) {
+			for (const DictKey &E : sortk) {
 				encode_uint32(E.hash, &tmpdata.write[pos + 8 + idx * 12 + 0]);
 				uint32_t ofs = _pack(E.key, tmpdata, string_cache);
 				encode_uint32(ofs, &tmpdata.write[pos + 8 + idx * 12 + 4]);

+ 5 - 5
core/io/resource.cpp

@@ -165,7 +165,7 @@ Error Resource::copy_from(const Ref<Resource> &p_resource) {
 	List<PropertyInfo> pi;
 	p_resource->get_property_list(&pi);
 
-	for (PropertyInfo &E : pi) {
+	for (const PropertyInfo &E : pi) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}
@@ -201,7 +201,7 @@ Ref<Resource> Resource::duplicate_for_local_scene(Node *p_for_scene, Map<Ref<Res
 
 	r->local_scene = p_for_scene;
 
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}
@@ -233,7 +233,7 @@ void Resource::configure_for_local_scene(Node *p_for_scene, Map<Ref<Resource>, R
 
 	local_scene = p_for_scene;
 
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}
@@ -259,7 +259,7 @@ Ref<Resource> Resource::duplicate(bool p_subresources) const {
 	Ref<Resource> r = (Resource *)ClassDB::instantiate(get_class());
 	ERR_FAIL_COND_V(r.is_null(), Ref<Resource>());
 
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}
@@ -317,7 +317,7 @@ uint32_t Resource::hash_edited_version() const {
 	List<PropertyInfo> plist;
 	get_property_list(&plist);
 
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (E.usage & PROPERTY_USAGE_STORAGE && E.type == Variant::OBJECT && E.hint == PROPERTY_HINT_RESOURCE_TYPE) {
 			RES res = get(E.name);
 			if (res.is_valid()) {

+ 10 - 11
core/io/resource_format_binary.cpp

@@ -1054,7 +1054,7 @@ void ResourceFormatLoaderBinary::get_recognized_extensions_for_type(const String
 
 	extensions.sort();
 
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		String ext = E.to_lower();
 		p_extensions->push_back(ext);
 	}
@@ -1065,7 +1065,7 @@ void ResourceFormatLoaderBinary::get_recognized_extensions(List<String> *p_exten
 	ClassDB::get_resource_base_extensions(&extensions);
 	extensions.sort();
 
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		String ext = E.to_lower();
 		p_extensions->push_back(ext);
 	}
@@ -1603,7 +1603,7 @@ void ResourceFormatSaverBinaryInstance::write_variant(FileAccess *f, const Varia
 			List<Variant> keys;
 			d.get_key_list(&keys);
 
-			for (Variant &E : keys) {
+			for (const Variant &E : keys) {
 				/*
 				if (!_check_type(dict[E]))
 					continue;
@@ -1760,7 +1760,7 @@ void ResourceFormatSaverBinaryInstance::_find_resources(const Variant &p_variant
 
 			res->get_property_list(&property_list);
 
-			for (PropertyInfo &E : property_list) {
+			for (const PropertyInfo &E : property_list) {
 				if (E.usage & PROPERTY_USAGE_STORAGE) {
 					Variant value = res->get(E.name);
 					if (E.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
@@ -1798,7 +1798,7 @@ void ResourceFormatSaverBinaryInstance::_find_resources(const Variant &p_variant
 			Dictionary d = p_variant;
 			List<Variant> keys;
 			d.get_key_list(&keys);
-			for (Variant &E : keys) {
+			for (const Variant &E : keys) {
 				_find_resources(E);
 				Variant v = d[E];
 				_find_resources(v);
@@ -1909,14 +1909,14 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
 	List<ResourceData> resources;
 
 	{
-		for (RES &E : saved_resources) {
+		for (const RES &E : saved_resources) {
 			ResourceData &rd = resources.push_back(ResourceData())->get();
 			rd.type = E->get_class();
 
 			List<PropertyInfo> property_list;
 			E->get_property_list(&property_list);
 
-			for (PropertyInfo &F : property_list) {
+			for (const PropertyInfo &F : property_list) {
 				if (skip_editor && F.name.begins_with("__editor")) {
 					continue;
 				}
@@ -2024,15 +2024,14 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
 	Vector<uint64_t> ofs_table;
 
 	//now actually save the resources
-	for (ResourceData &rd : resources) {
+	for (const ResourceData &rd : resources) {
 		ofs_table.push_back(f->get_position());
 		save_unicode_string(f, rd.type);
 		f->store_32(rd.properties.size());
 
-		for (Property &F : rd.properties) {
-			Property &p = F;
+		for (const Property &p : rd.properties) {
 			f->store_32(p.name_idx);
-			write_variant(f, p.value, resource_map, external_resources, string_map, F.pi);
+			write_variant(f, p.value, resource_map, external_resources, string_map, p.pi);
 		}
 	}
 

+ 4 - 4
core/io/resource_importer.cpp

@@ -148,7 +148,7 @@ void ResourceFormatImporter::get_recognized_extensions(List<String> *p_extension
 	for (int i = 0; i < importers.size(); i++) {
 		List<String> local_exts;
 		importers[i]->get_recognized_extensions(&local_exts);
-		for (String &F : local_exts) {
+		for (const String &F : local_exts) {
 			if (!found.has(F)) {
 				p_extensions->push_back(F);
 				found.insert(F);
@@ -177,7 +177,7 @@ void ResourceFormatImporter::get_recognized_extensions_for_type(const String &p_
 
 		List<String> local_exts;
 		importers[i]->get_recognized_extensions(&local_exts);
-		for (String &F : local_exts) {
+		for (const String &F : local_exts) {
 			if (!found.has(F)) {
 				p_extensions->push_back(F);
 				found.insert(F);
@@ -385,7 +385,7 @@ void ResourceFormatImporter::get_importers_for_extension(const String &p_extensi
 	for (int i = 0; i < importers.size(); i++) {
 		List<String> local_exts;
 		importers[i]->get_recognized_extensions(&local_exts);
-		for (String &F : local_exts) {
+		for (const String &F : local_exts) {
 			if (p_extension.to_lower() == F) {
 				r_importers->push_back(importers[i]);
 			}
@@ -406,7 +406,7 @@ Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_extension(const St
 	for (int i = 0; i < importers.size(); i++) {
 		List<String> local_exts;
 		importers[i]->get_recognized_extensions(&local_exts);
-		for (String &F : local_exts) {
+		for (const String &F : local_exts) {
 			if (p_extension.to_lower() == F && importers[i]->get_priority() > priority) {
 				importer = importers[i];
 				priority = importers[i]->get_priority();

+ 3 - 3
core/io/resource_loader.cpp

@@ -58,7 +58,7 @@ bool ResourceFormatLoader::recognize_path(const String &p_path, const String &p_
 		get_recognized_extensions_for_type(p_for_type, &extensions);
 	}
 
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		if (E.nocasecmp_to(extension) == 0) {
 			return true;
 		}
@@ -937,7 +937,7 @@ void ResourceLoader::load_translation_remaps() {
 	Dictionary remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps");
 	List<Variant> keys;
 	remaps.get_key_list(&keys);
-	for (Variant &E : keys) {
+	for (const Variant &E : keys) {
 		Array langs = remaps[E];
 		Vector<String> lang_remaps;
 		lang_remaps.resize(langs.size());
@@ -1030,7 +1030,7 @@ void ResourceLoader::add_custom_loaders() {
 	List<StringName> global_classes;
 	ScriptServer::get_global_class_list(&global_classes);
 
-	for (StringName &class_name : global_classes) {
+	for (const StringName &class_name : global_classes) {
 		StringName base_class = ScriptServer::get_global_class_native_base(class_name);
 
 		if (base_class == custom_loader_base_class) {

+ 2 - 2
core/io/resource_saver.cpp

@@ -95,7 +95,7 @@ Error ResourceSaver::save(const String &p_path, const RES &p_resource, uint32_t
 		bool recognized = false;
 		saver[i]->get_recognized_extensions(p_resource, &extensions);
 
-		for (String &E : extensions) {
+		for (const String &E : extensions) {
 			if (E.nocasecmp_to(extension) == 0) {
 				recognized = true;
 			}
@@ -237,7 +237,7 @@ void ResourceSaver::add_custom_savers() {
 	List<StringName> global_classes;
 	ScriptServer::get_global_class_list(&global_classes);
 
-	for (StringName &class_name : global_classes) {
+	for (const StringName &class_name : global_classes) {
 		StringName base_class = ScriptServer::get_global_class_native_base(class_name);
 
 		if (base_class == custom_saver_base_class) {

+ 2 - 2
core/math/quick_hull.cpp

@@ -336,7 +336,7 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
 	Map<Edge, RetFaceConnect> ret_edges;
 	List<Geometry3D::MeshData::Face> ret_faces;
 
-	for (Face &E : faces) {
+	for (const Face &E : faces) {
 		Geometry3D::MeshData::Face f;
 		f.plane = E.plane;
 
@@ -439,7 +439,7 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
 	r_mesh.faces.resize(ret_faces.size());
 
 	int idx = 0;
-	for (Geometry3D::MeshData::Face &E : ret_faces) {
+	for (const Geometry3D::MeshData::Face &E : ret_faces) {
 		r_mesh.faces.write[idx++] = E;
 	}
 	r_mesh.edges.resize(ret_edges.size());

+ 16 - 14
core/object/class_db.cpp

@@ -359,7 +359,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
 	//must be alphabetically sorted for hash to compute
 	names.sort_custom<StringName::AlphCompare>();
 
-	for (StringName &E : names) {
+	for (const StringName &E : names) {
 		ClassInfo *t = classes.getptr(E);
 		ERR_FAIL_COND_V_MSG(!t, 0, "Cannot get class '" + String(E) + "'.");
 		if (t->api != p_api || !t->exposed) {
@@ -388,7 +388,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
 
 			snames.sort_custom<StringName::AlphCompare>();
 
-			for (StringName &F : snames) {
+			for (const StringName &F : snames) {
 				MethodBind *mb = t->method_map[F];
 				hash = hash_djb2_one_64(mb->get_name().hash(), hash);
 				hash = hash_djb2_one_64(mb->get_argument_count(), hash);
@@ -426,7 +426,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
 
 			snames.sort_custom<StringName::AlphCompare>();
 
-			for (StringName &F : snames) {
+			for (const StringName &F : snames) {
 				hash = hash_djb2_one_64(F.hash(), hash);
 				hash = hash_djb2_one_64(t->constant_map[F], hash);
 			}
@@ -444,7 +444,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
 
 			snames.sort_custom<StringName::AlphCompare>();
 
-			for (StringName &F : snames) {
+			for (const StringName &F : snames) {
 				MethodInfo &mi = t->signal_map[F];
 				hash = hash_djb2_one_64(F.hash(), hash);
 				for (int i = 0; i < mi.arguments.size(); i++) {
@@ -465,7 +465,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
 
 			snames.sort_custom<StringName::AlphCompare>();
 
-			for (StringName &F : snames) {
+			for (const StringName &F : snames) {
 				PropertySetGet *psg = t->property_setget.getptr(F);
 				ERR_FAIL_COND_V(!psg, 0);
 
@@ -476,7 +476,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
 		}
 
 		//property list
-		for (PropertyInfo &F : t->property_list) {
+		for (const PropertyInfo &F : t->property_list) {
 			hash = hash_djb2_one_64(F.name.hash(), hash);
 			hash = hash_djb2_one_64(F.type, hash);
 			hash = hash_djb2_one_64(F.hint, hash);
@@ -619,11 +619,11 @@ void ClassDB::get_method_list(const StringName &p_class, List<MethodInfo> *p_met
 
 #ifdef DEBUG_METHODS_ENABLED
 
-		for (MethodInfo &E : type->virtual_methods) {
+		for (const MethodInfo &E : type->virtual_methods) {
 			p_methods->push_back(E);
 		}
 
-		for (StringName &E : type->method_order) {
+		for (const StringName &E : type->method_order) {
 			if (p_exclude_from_properties && type->methods_in_properties.has(E)) {
 				continue;
 			}
@@ -763,7 +763,7 @@ void ClassDB::get_integer_constant_list(const StringName &p_class, List<String>
 
 	while (type) {
 #ifdef DEBUG_METHODS_ENABLED
-		for (StringName &E : type->constant_order) {
+		for (const StringName &E : type->constant_order) {
 			p_constants->push_back(E);
 		}
 #else
@@ -1073,10 +1073,12 @@ void ClassDB::get_property_list(const StringName &p_class, List<PropertyInfo> *p
 	ClassInfo *type = classes.getptr(p_class);
 	ClassInfo *check = type;
 	while (check) {
-		for (PropertyInfo pi : check->property_list) {
+		for (const PropertyInfo &pi : check->property_list) {
 			if (p_validator) {
-				p_validator->_validate_property(pi);
-				p_list->push_back(pi);
+				// Making a copy as we may modify it.
+				PropertyInfo pi_mut = pi;
+				p_validator->_validate_property(pi_mut);
+				p_list->push_back(pi_mut);
 			} else {
 				p_list->push_back(pi);
 			}
@@ -1428,7 +1430,7 @@ void ClassDB::get_virtual_methods(const StringName &p_class, List<MethodInfo> *p
 	ClassInfo *type = classes.getptr(p_class);
 	ClassInfo *check = type;
 	while (check) {
-		for (MethodInfo &E : check->virtual_methods) {
+		for (const MethodInfo &E : check->virtual_methods) {
 			p_methods->push_back(E);
 		}
 
@@ -1533,7 +1535,7 @@ Variant ClassDB::class_get_default_property_value(const StringName &p_class, con
 		if (c) {
 			List<PropertyInfo> plist;
 			c->get_property_list(&plist);
-			for (PropertyInfo &E : plist) {
+			for (const PropertyInfo &E : plist) {
 				if (E.usage & (PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR)) {
 					if (!default_values[p_class].has(E.name)) {
 						Variant v = c->get(E.name);

+ 7 - 7
core/object/object.cpp

@@ -969,7 +969,7 @@ Vector<StringName> Object::_get_meta_list_bind() const {
 
 	List<Variant> keys;
 	metadata.get_key_list(&keys);
-	for (Variant &E : keys) {
+	for (const Variant &E : keys) {
 		_metaret.push_back(E);
 	}
 
@@ -979,7 +979,7 @@ Vector<StringName> Object::_get_meta_list_bind() const {
 void Object::get_meta_list(List<StringName> *p_list) const {
 	List<Variant> keys;
 	metadata.get_key_list(&keys);
-	for (Variant &E : keys) {
+	for (const Variant &E : keys) {
 		p_list->push_back(E);
 	}
 }
@@ -1184,7 +1184,7 @@ Array Object::_get_signal_list() const {
 	get_signal_list(&signal_list);
 
 	Array ret;
-	for (MethodInfo &E : signal_list) {
+	for (const MethodInfo &E : signal_list) {
 		ret.push_back(Dictionary(E));
 	}
 
@@ -1197,7 +1197,7 @@ Array Object::_get_signal_connection_list(const String &p_signal) const {
 
 	Array ret;
 
-	for (Connection &c : conns) {
+	for (const Connection &c : conns) {
 		if (c.signal.get_name() == p_signal) {
 			ret.push_back(c);
 		}
@@ -1499,7 +1499,7 @@ void Object::_clear_internal_resource_paths(const Variant &p_var) {
 			List<Variant> keys;
 			d.get_key_list(&keys);
 
-			for (Variant &E : keys) {
+			for (const Variant &E : keys) {
 				_clear_internal_resource_paths(E);
 				_clear_internal_resource_paths(d[E]);
 			}
@@ -1530,7 +1530,7 @@ void Object::clear_internal_resource_paths() {
 
 	get_property_list(&pinfo);
 
-	for (PropertyInfo &E : pinfo) {
+	for (const PropertyInfo &E : pinfo) {
 		_clear_internal_resource_paths(get(E.name));
 	}
 }
@@ -1665,7 +1665,7 @@ void Object::get_translatable_strings(List<String> *p_strings) const {
 	List<PropertyInfo> plist;
 	get_property_list(&plist);
 
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (!(E.usage & PROPERTY_USAGE_INTERNATIONALIZED)) {
 			continue;
 		}

+ 6 - 6
core/object/script_language.cpp

@@ -63,7 +63,7 @@ Array Script::_get_script_property_list() {
 	Array ret;
 	List<PropertyInfo> list;
 	get_script_property_list(&list);
-	for (PropertyInfo &E : list) {
+	for (const PropertyInfo &E : list) {
 		ret.append(E.operator Dictionary());
 	}
 	return ret;
@@ -73,7 +73,7 @@ Array Script::_get_script_method_list() {
 	Array ret;
 	List<MethodInfo> list;
 	get_script_method_list(&list);
-	for (MethodInfo &E : list) {
+	for (const MethodInfo &E : list) {
 		ret.append(E.operator Dictionary());
 	}
 	return ret;
@@ -83,7 +83,7 @@ Array Script::_get_script_signal_list() {
 	Array ret;
 	List<MethodInfo> list;
 	get_script_signal_list(&list);
-	for (MethodInfo &E : list) {
+	for (const MethodInfo &E : list) {
 		ret.append(E.operator Dictionary());
 	}
 	return ret;
@@ -257,7 +257,7 @@ void ScriptServer::get_global_class_list(List<StringName> *r_global_classes) {
 		classes.push_back(*K);
 	}
 	classes.sort_custom<StringName::AlphCompare>();
-	for (StringName &E : classes) {
+	for (const StringName &E : classes) {
 		r_global_classes->push_back(E);
 	}
 }
@@ -266,7 +266,7 @@ void ScriptServer::save_global_classes() {
 	List<StringName> gc;
 	get_global_class_list(&gc);
 	Array gcarr;
-	for (StringName &E : gc) {
+	for (const StringName &E : gc) {
 		Dictionary d;
 		d["class"] = E;
 		d["language"] = global_classes[E].language;
@@ -297,7 +297,7 @@ void ScriptServer::save_global_classes() {
 void ScriptInstance::get_property_state(List<Pair<StringName, Variant>> &state) {
 	List<PropertyInfo> pinfo;
 	get_property_list(&pinfo);
-	for (PropertyInfo &E : pinfo) {
+	for (const PropertyInfo &E : pinfo) {
 		if (E.usage & PROPERTY_USAGE_STORAGE) {
 			Pair<StringName, Variant> p;
 			p.first = E.name;

+ 1 - 1
core/string/optimized_translation.cpp

@@ -66,7 +66,7 @@ void OptimizedTranslation::generate(const Ref<Translation> &p_from) {
 	int total_compression_size = 0;
 	int total_string_size = 0;
 
-	for (StringName &E : keys) {
+	for (const StringName &E : keys) {
 		//hash string
 		CharString cs = E.operator String().utf8();
 		uint32_t h = hash(0, cs.get_data());

+ 1 - 1
core/string/translation.cpp

@@ -841,7 +841,7 @@ Vector<String> Translation::_get_message_list() const {
 void Translation::_set_messages(const Dictionary &p_messages) {
 	List<Variant> keys;
 	p_messages.get_key_list(&keys);
-	for (Variant &E : keys) {
+	for (const Variant &E : keys) {
 		translation_map[E] = p_messages[E];
 	}
 }

+ 6 - 6
core/string/translation_po.cpp

@@ -47,7 +47,7 @@ void TranslationPO::print_translation_map() {
 
 	List<StringName> context_l;
 	translation_map.get_key_list(&context_l);
-	for (StringName &ctx : context_l) {
+	for (const StringName &ctx : context_l) {
 		file->store_line(" ===== Context: " + String::utf8(String(ctx).utf8()) + " ===== ");
 		const HashMap<StringName, Vector<StringName>> &inner_map = translation_map[ctx];
 
@@ -73,7 +73,7 @@ Dictionary TranslationPO::_get_messages() const {
 
 	List<StringName> context_l;
 	translation_map.get_key_list(&context_l);
-	for (StringName &ctx : context_l) {
+	for (const StringName &ctx : context_l) {
 		const HashMap<StringName, Vector<StringName>> &id_str_map = translation_map[ctx];
 
 		Dictionary d2;
@@ -96,7 +96,7 @@ void TranslationPO::_set_messages(const Dictionary &p_messages) {
 
 	List<Variant> context_l;
 	p_messages.get_key_list(&context_l);
-	for (Variant &ctx : context_l) {
+	for (const Variant &ctx : context_l) {
 		const Dictionary &id_str_map = p_messages[ctx];
 
 		HashMap<StringName, Vector<StringName>> temp_map;
@@ -118,7 +118,7 @@ Vector<String> TranslationPO::_get_message_list() const {
 	get_message_list(&msgs);
 
 	Vector<String> v;
-	for (StringName &E : msgs) {
+	for (const StringName &E : msgs) {
 		v.push_back(E);
 	}
 
@@ -278,7 +278,7 @@ void TranslationPO::get_message_list(List<StringName> *r_messages) const {
 	List<StringName> context_l;
 	translation_map.get_key_list(&context_l);
 
-	for (StringName &E : context_l) {
+	for (const StringName &E : context_l) {
 		if (String(E) != "") {
 			continue;
 		}
@@ -297,7 +297,7 @@ int TranslationPO::get_message_count() const {
 	translation_map.get_key_list(&context_l);
 
 	int count = 0;
-	for (StringName &E : context_l) {
+	for (const StringName &E : context_l) {
 		count += translation_map[E].size();
 	}
 	return count;

+ 1 - 1
core/string/ustring.cpp

@@ -3421,7 +3421,7 @@ String String::format(const Variant &values, String placeholder) const {
 		List<Variant> keys;
 		d.get_key_list(&keys);
 
-		for (Variant &key : keys) {
+		for (const Variant &key : keys) {
 			new_string = new_string.replace(placeholder.replace("_", key), d[key]);
 		}
 	} else {

+ 1 - 1
core/variant/callable.cpp

@@ -407,7 +407,7 @@ Array Signal::get_connections() const {
 	object->get_signal_connection_list(name, &connections);
 
 	Array arr;
-	for (Object::Connection &E : connections) {
+	for (const Object::Connection &E : connections) {
 		arr.push_back(E);
 	}
 	return arr;

+ 1 - 1
core/variant/variant.cpp

@@ -1681,7 +1681,7 @@ String Variant::stringify(List<const void *> &stack) const {
 
 			Vector<_VariantStrPair> pairs;
 
-			for (Variant &E : keys) {
+			for (const Variant &E : keys) {
 				_VariantStrPair sp;
 				sp.key = E.stringify(stack);
 				sp.value = d[E].stringify(stack);

+ 2 - 2
core/variant/variant_call.cpp

@@ -1124,7 +1124,7 @@ bool Variant::has_builtin_method_return_value(Variant::Type p_type, const String
 
 void Variant::get_builtin_method_list(Variant::Type p_type, List<StringName> *p_list) {
 	ERR_FAIL_INDEX(p_type, Variant::VARIANT_MAX);
-	for (StringName &E : builtin_method_names[p_type]) {
+	for (const StringName &E : builtin_method_names[p_type]) {
 		p_list->push_back(E);
 	}
 }
@@ -1188,7 +1188,7 @@ void Variant::get_method_list(List<MethodInfo> *p_list) const {
 			obj->get_method_list(p_list);
 		}
 	} else {
-		for (StringName &E : builtin_method_names[type]) {
+		for (const StringName &E : builtin_method_names[type]) {
 			const VariantBuiltInMethodInfo *method = builtin_method_info[type].lookup_ptr(E);
 			ERR_CONTINUE(!method);
 

+ 1 - 1
core/variant/variant_parser.cpp

@@ -1586,7 +1586,7 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
 			List<PropertyInfo> props;
 			obj->get_property_list(&props);
 			bool first = true;
-			for (PropertyInfo &E : props) {
+			for (const PropertyInfo &E : props) {
 				if (E.usage & PROPERTY_USAGE_STORAGE || E.usage & PROPERTY_USAGE_SCRIPT_VARIABLE) {
 					//must be serialized
 

+ 2 - 2
core/variant/variant_setget.cpp

@@ -1093,7 +1093,7 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const {
 		const Dictionary *dic = reinterpret_cast<const Dictionary *>(_data._mem);
 		List<Variant> keys;
 		dic->get_key_list(&keys);
-		for (Variant &E : keys) {
+		for (const Variant &E : keys) {
 			if (E.get_type() == Variant::STRING) {
 				p_list->push_back(PropertyInfo(Variant::STRING, E));
 			}
@@ -1106,7 +1106,7 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const {
 	} else {
 		List<StringName> members;
 		get_member_list(type, &members);
-		for (StringName &E : members) {
+		for (const StringName &E : members) {
 			PropertyInfo pi;
 			pi.name = E;
 			pi.type = get_member_type(type, E);

+ 1 - 1
core/variant/variant_utility.cpp

@@ -1397,7 +1397,7 @@ uint32_t Variant::get_utility_function_hash(const StringName &p_name) {
 }
 
 void Variant::get_utility_function_list(List<StringName> *r_functions) {
-	for (StringName &E : utility_function_name_table) {
+	for (const StringName &E : utility_function_name_table) {
 		r_functions->push_back(E);
 	}
 }

+ 1 - 1
drivers/unix/net_socket_posix.cpp

@@ -269,7 +269,7 @@ _FORCE_INLINE_ Error NetSocketPosix::_change_multicast_group(IPAddress p_ip, Str
 			break; // IPv6 uses index.
 		}
 
-		for (IPAddress &F : c.ip_addresses) {
+		for (const IPAddress &F : c.ip_addresses) {
 			if (!F.is_ipv4()) {
 				continue; // Wrong IP type
 			}

+ 2 - 2
drivers/vulkan/rendering_device_vulkan.cpp

@@ -8542,7 +8542,7 @@ void RenderingDeviceVulkan::_free_rids(T &p_owner, const char *p_type) {
 		} else {
 			WARN_PRINT(vformat("%d RIDs of type \"%s\" were leaked.", owned.size(), p_type));
 		}
-		for (RID E : owned) {
+		for (const RID &E : owned) {
 			free(E);
 		}
 	}
@@ -8769,7 +8769,7 @@ void RenderingDeviceVulkan::finalize() {
 				E = N;
 			}
 			//free non shared second, this will avoid an error trying to free unexisting textures due to dependencies.
-			for (RID E : owned) {
+			for (const RID &E : owned) {
 				free(E);
 			}
 		}

+ 2 - 2
editor/animation_bezier_editor.cpp

@@ -898,7 +898,7 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
 			}
 
 			// 6-(undo) reinsert overlapped keys
-			for (AnimMoveRestore &amr : to_restore) {
+			for (const AnimMoveRestore &amr : to_restore) {
 				undo_redo->add_undo_method(animation.ptr(), "track_insert_key", amr.track, amr.time, amr.key, 1);
 			}
 
@@ -1090,7 +1090,7 @@ void AnimationBezierTrackEdit::duplicate_selection() {
 	//reselect duplicated
 
 	selection.clear();
-	for (Pair<int, float> &E : new_selection_values) {
+	for (const Pair<int, float> &E : new_selection_values) {
 		int track = E.first;
 		float time = E.second;
 

+ 6 - 6
editor/animation_track_editor.cpp

@@ -598,7 +598,7 @@ public:
 					if (ap) {
 						List<StringName> anims;
 						ap->get_animation_list(&anims);
-						for (StringName &E : anims) {
+						for (const StringName &E : anims) {
 							if (animations != String()) {
 								animations += ",";
 							}
@@ -3356,7 +3356,7 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) {
 	}
 	insert_frame = Engine::get_singleton()->get_frames_drawn();
 
-	for (InsertData &E : insert_data) {
+	for (const InsertData &E : insert_data) {
 		//prevent insertion of multiple tracks
 		if (E.path == p_id.path) {
 			return; //already inserted a track for this on this frame
@@ -3843,7 +3843,7 @@ PropertyInfo AnimationTrackEditor::_find_hint_for_track(int p_idx, NodePath &r_b
 	List<PropertyInfo> pinfo;
 	property_info_base.get_property_list(&pinfo);
 
-	for (PropertyInfo &E : pinfo) {
+	for (const PropertyInfo &E : pinfo) {
 		if (E.name == leftover_path[leftover_path.size() - 1]) {
 			return E;
 		}
@@ -4675,7 +4675,7 @@ void AnimationTrackEditor::_add_method_key(const String &p_method) {
 	List<MethodInfo> minfo;
 	base->get_method_list(&minfo);
 
-	for (MethodInfo &E : minfo) {
+	for (const MethodInfo &E : minfo) {
 		if (E.name == p_method) {
 			Dictionary d;
 			d["method"] = p_method;
@@ -5150,7 +5150,7 @@ void AnimationTrackEditor::_anim_duplicate_keys(bool transpose) {
 		//reselect duplicated
 
 		Map<SelectedKey, KeyInfo> new_selection;
-		for (Pair<int, float> &E : new_selection_values) {
+		for (const Pair<int, float> &E : new_selection_values) {
 			int track = E.first;
 			float time = E.second;
 
@@ -5541,7 +5541,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
 			if (cleanup_all->is_pressed()) {
 				List<StringName> names;
 				AnimationPlayerEditor::singleton->get_player()->get_animation_list(&names);
-				for (StringName &E : names) {
+				for (const StringName &E : names) {
 					_cleanup_animation(AnimationPlayerEditor::singleton->get_player()->get_animation(E));
 				}
 			} else {

+ 1 - 1
editor/code_editor.cpp

@@ -854,7 +854,7 @@ void CodeTextEditor::_complete_request() {
 		return;
 	}
 
-	for (ScriptCodeCompletionOption &e : entries) {
+	for (const ScriptCodeCompletionOption &e : entries) {
 		Color font_color = completion_font_color;
 		if (e.insert_text.begins_with("\"") || e.insert_text.begins_with("\'")) {
 			font_color = completion_string_color;

+ 1 - 1
editor/connections_dialog.cpp

@@ -1023,7 +1023,7 @@ void ConnectionsDock::update_tree() {
 			List<Object::Connection> connections;
 			selectedNode->get_signal_connection_list(signal_name, &connections);
 
-			for (Object::Connection &F : connections) {
+			for (const Object::Connection &F : connections) {
 				Connection cn = F;
 				if (!(cn.flags & CONNECT_PERSIST)) {
 					continue;

+ 1 - 1
editor/create_dialog.cpp

@@ -447,7 +447,7 @@ Variant CreateDialog::instance_selected() {
 	List<PropertyInfo> pinfo;
 	((Object *)obj)->get_property_list(&pinfo);
 
-	for (PropertyInfo &pi : pinfo) {
+	for (const PropertyInfo &pi : pinfo) {
 		if (pi.type == Variant::OBJECT && pi.usage & PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT) {
 			Object *prop = ClassDB::instantiate(pi.class_name);
 			((Object *)obj)->set(pi.name, prop);

+ 1 - 1
editor/debugger/script_editor_debugger.cpp

@@ -347,7 +347,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
 
 		uint64_t total = 0;
 
-		for (DebuggerMarshalls::ResourceInfo &E : usage.infos) {
+		for (const DebuggerMarshalls::ResourceInfo &E : usage.infos) {
 			TreeItem *it = vmem_tree->create_item(root);
 			String type = E.type;
 			int bytes = E.vram;

+ 4 - 4
editor/dependency_editor.cpp

@@ -55,7 +55,7 @@ void DependencyEditor::_load_pressed(Object *p_item, int p_cell, int p_button) {
 	search->clear_filters();
 	List<String> ext;
 	ResourceLoader::get_recognized_extensions_for_type(ti->get_metadata(0), &ext);
-	for (String &E : ext) {
+	for (const String &E : ext) {
 		search->add_filter("*" + E);
 	}
 	search->popup_file_dialog();
@@ -120,7 +120,7 @@ void DependencyEditor::_fix_all() {
 
 	Map<String, Map<String, String>> candidates;
 
-	for (String &E : missing) {
+	for (const String &E : missing) {
 		String base = E.get_file();
 		if (!candidates.has(base)) {
 			candidates[base] = Map<String, String>();
@@ -166,7 +166,7 @@ void DependencyEditor::_update_list() {
 
 	bool broken = false;
 
-	for (String &n : deps) {
+	for (const String &n : deps) {
 		TreeItem *item = tree->create_item(root);
 		String path;
 		String type;
@@ -748,7 +748,7 @@ void OrphanResourcesDialog::_find_to_delete(TreeItem *p_item, List<String> &path
 
 void OrphanResourcesDialog::_delete_confirm() {
 	DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
-	for (String &E : paths) {
+	for (const String &E : paths) {
 		da->remove(E);
 		EditorFileSystem::get_singleton()->update_file(E);
 	}

+ 16 - 16
editor/doc_tools.cpp

@@ -266,7 +266,7 @@ void DocTools::generate(bool p_basic_types) {
 		}
 
 		List<PropertyInfo>::Element *EO = own_properties.front();
-		for (PropertyInfo &E : properties) {
+		for (const PropertyInfo &E : properties) {
 			bool inherited = EO == nullptr;
 			if (EO && EO->get() == E) {
 				inherited = false;
@@ -367,7 +367,7 @@ void DocTools::generate(bool p_basic_types) {
 		ClassDB::get_method_list(name, &method_list, true);
 		method_list.sort();
 
-		for (MethodInfo &E : method_list) {
+		for (const MethodInfo &E : method_list) {
 			if (E.name == "" || (E.name[0] == '_' && !(E.flags & METHOD_FLAG_VIRTUAL))) {
 				continue; //hidden, don't count
 			}
@@ -455,7 +455,7 @@ void DocTools::generate(bool p_basic_types) {
 		List<String> constant_list;
 		ClassDB::get_integer_constant_list(name, &constant_list, true);
 
-		for (String &E : constant_list) {
+		for (const String &E : constant_list) {
 			DocData::ConstantDoc constant;
 			constant.name = E;
 			constant.value = itos(ClassDB::get_integer_constant(name, E));
@@ -469,7 +469,7 @@ void DocTools::generate(bool p_basic_types) {
 		{
 			List<StringName> l;
 			Theme::get_default()->get_constant_list(cname, &l);
-			for (StringName &E : l) {
+			for (const StringName &E : l) {
 				DocData::PropertyDoc pd;
 				pd.name = E;
 				pd.type = "int";
@@ -479,7 +479,7 @@ void DocTools::generate(bool p_basic_types) {
 
 			l.clear();
 			Theme::get_default()->get_color_list(cname, &l);
-			for (StringName &E : l) {
+			for (const StringName &E : l) {
 				DocData::PropertyDoc pd;
 				pd.name = E;
 				pd.type = "Color";
@@ -489,7 +489,7 @@ void DocTools::generate(bool p_basic_types) {
 
 			l.clear();
 			Theme::get_default()->get_icon_list(cname, &l);
-			for (StringName &E : l) {
+			for (const StringName &E : l) {
 				DocData::PropertyDoc pd;
 				pd.name = E;
 				pd.type = "Texture2D";
@@ -497,7 +497,7 @@ void DocTools::generate(bool p_basic_types) {
 			}
 			l.clear();
 			Theme::get_default()->get_font_list(cname, &l);
-			for (StringName &E : l) {
+			for (const StringName &E : l) {
 				DocData::PropertyDoc pd;
 				pd.name = E;
 				pd.type = "Font";
@@ -505,7 +505,7 @@ void DocTools::generate(bool p_basic_types) {
 			}
 			l.clear();
 			Theme::get_default()->get_font_size_list(cname, &l);
-			for (StringName &E : l) {
+			for (const StringName &E : l) {
 				DocData::PropertyDoc pd;
 				pd.name = E;
 				pd.type = "int";
@@ -513,7 +513,7 @@ void DocTools::generate(bool p_basic_types) {
 			}
 			l.clear();
 			Theme::get_default()->get_stylebox_list(cname, &l);
-			for (StringName &E : l) {
+			for (const StringName &E : l) {
 				DocData::PropertyDoc pd;
 				pd.name = E;
 				pd.type = "StyleBox";
@@ -621,7 +621,7 @@ void DocTools::generate(bool p_basic_types) {
 			method_list.push_back(mi);
 		}
 
-		for (MethodInfo &mi : method_list) {
+		for (const MethodInfo &mi : method_list) {
 			DocData::MethodDoc method;
 
 			method.name = mi.name;
@@ -674,7 +674,7 @@ void DocTools::generate(bool p_basic_types) {
 
 		List<PropertyInfo> properties;
 		v.get_property_list(&properties);
-		for (PropertyInfo &pi : properties) {
+		for (const PropertyInfo &pi : properties) {
 			DocData::PropertyDoc property;
 			property.name = pi.name;
 			property.type = Variant::get_type_name(pi.type);
@@ -686,7 +686,7 @@ void DocTools::generate(bool p_basic_types) {
 		List<StringName> constants;
 		Variant::get_constants_for_type(Variant::Type(i), &constants);
 
-		for (StringName &E : constants) {
+		for (const StringName &E : constants) {
 			DocData::ConstantDoc constant;
 			constant.name = E;
 			Variant value = Variant::get_constant_value(Variant::Type(i), E);
@@ -721,7 +721,7 @@ void DocTools::generate(bool p_basic_types) {
 		Engine::get_singleton()->get_singletons(&singletons);
 
 		//servers (this is kind of hackish)
-		for (Engine::Singleton &s : singletons) {
+		for (const Engine::Singleton &s : singletons) {
 			DocData::PropertyDoc pd;
 			if (!s.ptr) {
 				continue;
@@ -740,7 +740,7 @@ void DocTools::generate(bool p_basic_types) {
 		List<StringName> utility_functions;
 		Variant::get_utility_function_list(&utility_functions);
 		utility_functions.sort_custom<StringName::AlphCompare>();
-		for (StringName &E : utility_functions) {
+		for (const StringName &E : utility_functions) {
 			DocData::MethodDoc md;
 			md.name = E;
 			//return
@@ -790,7 +790,7 @@ void DocTools::generate(bool p_basic_types) {
 			List<MethodInfo> minfo;
 			lang->get_public_functions(&minfo);
 
-			for (MethodInfo &mi : minfo) {
+			for (const MethodInfo &mi : minfo) {
 				DocData::MethodDoc md;
 				md.name = mi.name;
 
@@ -823,7 +823,7 @@ void DocTools::generate(bool p_basic_types) {
 			List<Pair<String, Variant>> cinfo;
 			lang->get_public_constants(&cinfo);
 
-			for (Pair<String, Variant> &E : cinfo) {
+			for (const Pair<String, Variant> &E : cinfo) {
 				DocData::ConstantDoc cd;
 				cd.name = E.first;
 				cd.value = E.second;

+ 2 - 2
editor/editor_audio_buses.cpp

@@ -920,7 +920,7 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) {
 	List<StringName> effects;
 	ClassDB::get_inheriters_from_class("AudioEffect", &effects);
 	effects.sort_custom<StringName::AlphCompare>();
-	for (StringName &E : effects) {
+	for (const StringName &E : effects) {
 		if (!ClassDB::can_instantiate(E)) {
 			continue;
 		}
@@ -1331,7 +1331,7 @@ EditorAudioBuses::EditorAudioBuses() {
 	file_dialog = memnew(EditorFileDialog);
 	List<String> ext;
 	ResourceLoader::get_recognized_extensions_for_type("AudioBusLayout", &ext);
-	for (String &E : ext) {
+	for (const String &E : ext) {
 		file_dialog->add_filter("*." + E + "; Audio Bus Layout");
 	}
 	add_child(file_dialog);

+ 9 - 9
editor/editor_autoload_settings.cpp

@@ -46,11 +46,11 @@ void EditorAutoloadSettings::_notification(int p_what) {
 		ResourceLoader::get_recognized_extensions_for_type("Script", &afn);
 		ResourceLoader::get_recognized_extensions_for_type("PackedScene", &afn);
 
-		for (String &E : afn) {
+		for (const String &E : afn) {
 			file_dialog->add_filter("*." + E);
 		}
 
-		for (AutoLoadInfo &info : autoload_cache) {
+		for (const AutoLoadInfo &info : autoload_cache) {
 			if (info.node && info.in_editor) {
 				get_tree()->get_root()->call_deferred(SNAME("add_child"), info.node);
 			}
@@ -101,7 +101,7 @@ bool EditorAutoloadSettings::_autoload_name_is_valid(const String &p_name, Strin
 	for (int i = 0; i < ScriptServer::get_language_count(); i++) {
 		List<String> keywords;
 		ScriptServer::get_language(i)->get_reserved_words(&keywords);
-		for (String &E : keywords) {
+		for (const String &E : keywords) {
 			if (E == p_name) {
 				if (r_error) {
 					*r_error = TTR("Invalid name.") + "\n" + TTR("Keyword cannot be used as an autoload name.");
@@ -378,7 +378,7 @@ void EditorAutoloadSettings::update_autoload() {
 	Map<String, AutoLoadInfo> to_remove;
 	List<AutoLoadInfo *> to_add;
 
-	for (AutoLoadInfo &info : autoload_cache) {
+	for (const AutoLoadInfo &info : autoload_cache) {
 		to_remove.insert(info.name, info);
 	}
 
@@ -390,7 +390,7 @@ void EditorAutoloadSettings::update_autoload() {
 	List<PropertyInfo> props;
 	ProjectSettings::get_singleton()->get_property_list(&props);
 
-	for (PropertyInfo &pi : props) {
+	for (const PropertyInfo &pi : props) {
 		if (!pi.name.begins_with("autoload/")) {
 			continue;
 		}
@@ -643,7 +643,7 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant &
 
 	int i = 0;
 
-	for (AutoLoadInfo &F : autoload_cache) {
+	for (const AutoLoadInfo &F : autoload_cache) {
 		orders.write[i++] = F.order;
 	}
 
@@ -655,7 +655,7 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant &
 
 	i = 0;
 
-	for (AutoLoadInfo &F : autoload_cache) {
+	for (const AutoLoadInfo &F : autoload_cache) {
 		undo_redo->add_do_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F.name, orders[i++]);
 		undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F.name, F.order);
 	}
@@ -758,7 +758,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() {
 	// Make first cache
 	List<PropertyInfo> props;
 	ProjectSettings::get_singleton()->get_property_list(&props);
-	for (PropertyInfo &pi : props) {
+	for (const PropertyInfo &pi : props) {
 		if (!pi.name.begins_with("autoload/")) {
 			continue;
 		}
@@ -894,7 +894,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() {
 }
 
 EditorAutoloadSettings::~EditorAutoloadSettings() {
-	for (AutoLoadInfo &info : autoload_cache) {
+	for (const AutoLoadInfo &info : autoload_cache) {
 		if (info.node && !info.in_editor) {
 			memdelete(info.node);
 		}

+ 6 - 6
editor/editor_data.cpp

@@ -299,7 +299,7 @@ void EditorData::copy_object_params(Object *p_object) {
 	List<PropertyInfo> pinfo;
 	p_object->get_property_list(&pinfo);
 
-	for (PropertyInfo &E : pinfo) {
+	for (const PropertyInfo &E : pinfo) {
 		if (!(E.usage & PROPERTY_USAGE_EDITOR) || E.name == "script" || E.name == "scripts") {
 			continue;
 		}
@@ -404,7 +404,7 @@ void EditorData::restore_editor_global_states() {
 void EditorData::paste_object_params(Object *p_object) {
 	ERR_FAIL_NULL(p_object);
 	undo_redo.create_action(TTR("Paste Params"));
-	for (PropertyData &E : clipboard) {
+	for (const PropertyData &E : clipboard) {
 		String name = E.name;
 		undo_redo.add_do_property(p_object, name, E.value);
 		undo_redo.add_undo_property(p_object, name, p_object->get(name));
@@ -616,7 +616,7 @@ bool EditorData::check_and_update_scene(int p_idx) {
 
 		//transfer selection
 		List<Node *> new_selection;
-		for (Node *E : edited_scene.write[p_idx].selection) {
+		for (const Node *E : edited_scene.write[p_idx].selection) {
 			NodePath p = edited_scene[p_idx].root->get_path_to(E);
 			Node *new_node = new_scene->get_node(p);
 			if (new_node) {
@@ -964,7 +964,7 @@ void EditorData::script_class_save_icon_paths() {
 	_script_class_icon_paths.get_key_list(&keys);
 
 	Dictionary d;
-	for (StringName &E : keys) {
+	for (const StringName &E : keys) {
 		if (ScriptServer::is_global_class(E)) {
 			d[E] = _script_class_icon_paths[E];
 		}
@@ -996,7 +996,7 @@ void EditorData::script_class_load_icon_paths() {
 		List<Variant> keys;
 		d.get_key_list(&keys);
 
-		for (Variant &E : keys) {
+		for (const Variant &E : keys) {
 			String name = E.operator String();
 			_script_class_icon_paths[name] = d[name];
 
@@ -1076,7 +1076,7 @@ bool EditorSelection::is_selected(Node *p_node) const {
 Array EditorSelection::_get_transformable_selected_nodes() {
 	Array ret;
 
-	for (Node *E : selected_node_list) {
+	for (const Node *E : selected_node_list) {
 		ret.push_back(E);
 	}
 

+ 7 - 7
editor/editor_export.cpp

@@ -436,7 +436,7 @@ Ref<EditorExportPreset> EditorExportPlatform::create_preset() {
 	List<ExportOption> options;
 	get_export_options(&options);
 
-	for (ExportOption &E : options) {
+	for (const ExportOption &E : options) {
 		preset->properties.push_back(E.option);
 		preset->values[E.option.name] = E.default_value;
 	}
@@ -679,7 +679,7 @@ EditorExportPlatform::FeatureContainers EditorExportPlatform::get_feature_contai
 	platform->get_preset_features(p_preset, &feature_list);
 
 	FeatureContainers result;
-	for (String &E : feature_list) {
+	for (const String &E : feature_list) {
 		result.features.insert(E);
 		result.features_pv.push_back(E);
 	}
@@ -752,7 +752,7 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
 		List<PropertyInfo> props;
 		ProjectSettings::get_singleton()->get_property_list(&props);
 
-		for (PropertyInfo &pi : props) {
+		for (const PropertyInfo &pi : props) {
 			if (!pi.name.begins_with("autoload/")) {
 				continue;
 			}
@@ -897,7 +897,7 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
 
 			Set<String> remap_features;
 
-			for (String &F : remaps) {
+			for (const String &F : remaps) {
 				String remap = F;
 				String feature = remap.get_slice(".", 1);
 				if (features.has(feature)) {
@@ -911,7 +911,7 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
 
 			err = OK;
 
-			for (String &F : remaps) {
+			for (const String &F : remaps) {
 				String remap = F;
 				if (remap == "path") {
 					String remapped_path = config->get_value("remap", remap);
@@ -1647,7 +1647,7 @@ void EditorExport::load_config() {
 
 		config->get_section_keys(option_section, &options);
 
-		for (String &E : options) {
+		for (const String &E : options) {
 			Variant value = config->get_value(option_section, E);
 
 			preset->set(E, value);
@@ -1689,7 +1689,7 @@ void EditorExport::update_export_presets() {
 			preset->properties.clear();
 			preset->values.clear();
 
-			for (EditorExportPlatform::ExportOption &E : options) {
+			for (const EditorExportPlatform::ExportOption &E : options) {
 				preset->properties.push_back(E.option);
 
 				StringName option_name = E.option.name;

+ 2 - 2
editor/editor_feature_profile.cpp

@@ -527,7 +527,7 @@ void EditorFeatureProfileManager::_fill_classes_from(TreeItem *p_parent, const S
 	ClassDB::get_direct_inheriters_from_class(p_class, &child_classes);
 	child_classes.sort_custom<StringName::AlphCompare>();
 
-	for (StringName &name : child_classes) {
+	for (const StringName &name : child_classes) {
 		if (String(name).begins_with("Editor") || ClassDB::get_api_type(name) != ClassDB::API_CORE) {
 			continue;
 		}
@@ -596,7 +596,7 @@ void EditorFeatureProfileManager::_class_list_item_selected() {
 		TreeItem *properties = property_list->create_item(root);
 		properties->set_text(0, TTR("Class Properties:"));
 
-		for (PropertyInfo &E : props) {
+		for (const PropertyInfo &E : props) {
 			String name = E.name;
 			if (!(E.usage & PROPERTY_USAGE_EDITOR)) {
 				continue;

+ 1 - 1
editor/editor_file_dialog.cpp

@@ -830,7 +830,7 @@ void EditorFileDialog::update_file_list() {
 	while (!files.is_empty()) {
 		bool match = patterns.is_empty();
 
-		for (String &E : patterns) {
+		for (const String &E : patterns) {
 			if (files.front()->get().matchn(E)) {
 				match = true;
 				break;

+ 16 - 16
editor/editor_file_system.cpp

@@ -484,7 +484,7 @@ bool EditorFileSystem::_test_for_reimport(const String &p_path, bool p_only_impo
 	memdelete(md5s);
 
 	//imported files are gone, reimport
-	for (String &E : to_check) {
+	for (const String &E : to_check) {
 		if (!FileAccess::exists(E)) {
 			return true;
 		}
@@ -524,7 +524,7 @@ bool EditorFileSystem::_update_scan_actions() {
 	Vector<String> reimports;
 	Vector<String> reloads;
 
-	for (ItemAction &ia : scan_actions) {
+	for (const ItemAction &ia : scan_actions) {
 		switch (ia.action) {
 			case ItemAction::ACTION_NONE: {
 			} break;
@@ -1072,7 +1072,7 @@ void EditorFileSystem::_delete_internal_files(String p_file) {
 		List<String> paths;
 		ResourceFormatImporter::get_singleton()->get_internal_resource_path_list(p_file, &paths);
 		DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
-		for (String &E : paths) {
+		for (const String &E : paths) {
 			da->remove(E);
 		}
 		da->remove(p_file + ".import");
@@ -1413,7 +1413,7 @@ Vector<String> EditorFileSystem::_get_dependencies(const String &p_path) {
 	ResourceLoader::get_dependencies(p_path, &deps);
 
 	Vector<String> ret;
-	for (String &E : deps) {
+	for (const String &E : deps) {
 		ret.push_back(E);
 	}
 
@@ -1609,14 +1609,14 @@ Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector
 		List<ResourceImporter::ImportOption> options;
 		importer->get_import_options(&options);
 		//set default values
-		for (ResourceImporter::ImportOption &E : options) {
+		for (const ResourceImporter::ImportOption &E : options) {
 			source_file_options[p_files[i]][E.option.name] = E.default_value;
 		}
 
 		if (config->has_section("params")) {
 			List<String> sk;
 			config->get_section_keys("params", &sk);
-			for (String &param : sk) {
+			for (const String &param : sk) {
 				Variant value = config->get_value("params", param);
 				//override with whathever is in file
 				source_file_options[p_files[i]][param] = value;
@@ -1690,7 +1690,7 @@ Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector
 		List<ResourceImporter::ImportOption> options;
 		importer->get_import_options(&options);
 		//set default values
-		for (ResourceImporter::ImportOption &F : options) {
+		for (const ResourceImporter::ImportOption &F : options) {
 			String base = F.option.name;
 			Variant v = F.default_value;
 			if (source_file_options[file].has(base)) {
@@ -1773,7 +1773,7 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
 				if (cf->has_section("params")) {
 					List<String> sk;
 					cf->get_section_keys("params", &sk);
-					for (String &E : sk) {
+					for (const String &E : sk) {
 						params[E] = cf->get_value("params", E);
 					}
 				}
@@ -1823,7 +1823,7 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
 
 	List<ResourceImporter::ImportOption> opts;
 	importer->get_import_options(&opts);
-	for (ResourceImporter::ImportOption &E : opts) {
+	for (const ResourceImporter::ImportOption &E : opts) {
 		if (!params.has(E.option.name)) { //this one is not present
 			params[E.option.name] = E.default_value;
 		}
@@ -1835,7 +1835,7 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
 		List<Variant> v;
 		d.get_key_list(&v);
 
-		for (Variant &E : v) {
+		for (const Variant &E : v) {
 			params[E] = d[E];
 		}
 	}
@@ -1882,7 +1882,7 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
 			//no path
 		} else if (import_variants.size()) {
 			//import with variants
-			for (String &E : import_variants) {
+			for (const String &E : import_variants) {
 				String path = base_path.c_escape() + "." + E + "." + importer->get_save_extension();
 
 				f->store_line("path." + E + "=\"" + path + "\"");
@@ -1908,7 +1908,7 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
 
 	if (gen_files.size()) {
 		Array genf;
-		for (String &E : gen_files) {
+		for (const String &E : gen_files) {
 			genf.push_back(E);
 			dest_paths.push_back(E);
 		}
@@ -1934,7 +1934,7 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
 
 	//store options in provided order, to avoid file changing. Order is also important because first match is accepted first.
 
-	for (ResourceImporter::ImportOption &E : opts) {
+	for (const ResourceImporter::ImportOption &E : opts) {
 		String base = E.option.name;
 		String value;
 		VariantWriter::write_to_string(params[base], value);
@@ -2171,7 +2171,7 @@ void EditorFileSystem::_move_group_files(EditorFileSystemDirectory *efd, const S
 
 			List<String> sk;
 			config->get_section_keys("params", &sk);
-			for (String &param : sk) {
+			for (const String &param : sk) {
 				//not very clean, but should work
 				String value = config->get_value("params", param);
 				if (value == p_group_file) {
@@ -2245,13 +2245,13 @@ void EditorFileSystem::_update_extensions() {
 
 	List<String> extensionsl;
 	ResourceLoader::get_recognized_extensions_for_type("", &extensionsl);
-	for (String &E : extensionsl) {
+	for (const String &E : extensionsl) {
 		valid_extensions.insert(E);
 	}
 
 	extensionsl.clear();
 	ResourceFormatImporter::get_singleton()->get_recognized_extensions(&extensionsl);
-	for (String &E : extensionsl) {
+	for (const String &E : extensionsl) {
 		import_extensions.insert(E);
 	}
 }

+ 2 - 2
editor/editor_folding.cpp

@@ -109,7 +109,7 @@ void EditorFolding::_fill_folds(const Node *p_root, const Node *p_node, Array &p
 
 	List<PropertyInfo> plist;
 	p_node->get_property_list(&plist);
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (E.usage & PROPERTY_USAGE_EDITOR) {
 			if (E.type == Variant::OBJECT) {
 				RES res = p_node->get(E.name);
@@ -228,7 +228,7 @@ void EditorFolding::_do_object_unfolds(Object *p_object, Set<RES> &resources) {
 
 	Set<String> unfold_group;
 
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (E.usage & PROPERTY_USAGE_CATEGORY) {
 			group = "";
 			group_base = "";

+ 3 - 3
editor/editor_inspector.cpp

@@ -1508,7 +1508,7 @@ String EditorInspector::get_selected_path() const {
 }
 
 void EditorInspector::_parse_added_editors(VBoxContainer *current_vbox, Ref<EditorInspectorPlugin> ped) {
-	for (EditorInspectorPlugin::AddedEditor &F : ped->added_editors) {
+	for (const EditorInspectorPlugin::AddedEditor &F : ped->added_editors) {
 		EditorProperty *ep = Object::cast_to<EditorProperty>(F.property_editor);
 		current_vbox->add_child(F.property_editor);
 
@@ -1952,7 +1952,7 @@ void EditorInspector::update_tree() {
 			List<EditorInspectorPlugin::AddedEditor> editors = ped->added_editors; //make a copy, since plugins may be used again in a sub-inspector
 			ped->added_editors.clear();
 
-			for (EditorInspectorPlugin::AddedEditor &F : editors) {
+			for (const EditorInspectorPlugin::AddedEditor &F : editors) {
 				EditorProperty *ep = Object::cast_to<EditorProperty>(F.property_editor);
 
 				if (ep) {
@@ -2391,7 +2391,7 @@ void EditorInspector::_property_checked(const String &p_path, bool p_checked) {
 			Variant to_create;
 			List<PropertyInfo> pinfo;
 			object->get_property_list(&pinfo);
-			for (PropertyInfo &E : pinfo) {
+			for (const PropertyInfo &E : pinfo) {
 				if (E.name == p_path) {
 					Callable::CallError ce;
 					Variant::construct(E.type, to_create, nullptr, 0, ce);

+ 1 - 1
editor/editor_layouts_dialog.cpp

@@ -92,7 +92,7 @@ void EditorLayoutsDialog::_post_popup() {
 	List<String> layouts;
 	config.ptr()->get_sections(&layouts);
 
-	for (String &E : layouts) {
+	for (const String &E : layouts) {
 		layout_names->add_item(E);
 	}
 }

+ 12 - 12
editor/editor_node.cpp

@@ -914,7 +914,7 @@ void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
 		}
 	}
 
-	for (String &E : scenes) {
+	for (const String &E : scenes) {
 		reload_scene(E);
 	}
 
@@ -1143,7 +1143,7 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
 	file->clear_filters();
 
 	List<String> preferred;
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		if (p_resource->is_class("Script") && (E == "tres" || E == "res")) {
 			//this serves no purpose and confused people
 			continue;
@@ -1259,7 +1259,7 @@ void EditorNode::_get_scene_metadata(const String &p_file) {
 	cf->get_section_keys("editor_states", &esl);
 
 	Dictionary md;
-	for (String &E : esl) {
+	for (const String &E : esl) {
 		Variant st = cf->get_value("editor_states", E);
 		if (st.get_type() != Variant::NIL) {
 			md[E] = st;
@@ -1295,7 +1295,7 @@ void EditorNode::_set_scene_metadata(const String &p_file, int p_idx) {
 	List<Variant> keys;
 	md.get_key_list(&keys);
 
-	for (Variant &E : keys) {
+	for (const Variant &E : keys) {
 		cf->set_value("editor_states", E, md[E]);
 	}
 
@@ -1334,7 +1334,7 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool>
 	bool ret_changed = false;
 	List<PropertyInfo> pi;
 	obj->get_property_list(&pi);
-	for (PropertyInfo &E : pi) {
+	for (const PropertyInfo &E : pi) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}
@@ -1364,7 +1364,7 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool>
 				Dictionary d = obj->get(E.name);
 				List<Variant> keys;
 				d.get_key_list(&keys);
-				for (Variant &F : keys) {
+				for (const Variant &F : keys) {
 					Variant v = d[F];
 					RES res = v;
 					if (_find_and_save_resource(res, processed, flags)) {
@@ -1520,7 +1520,7 @@ static bool _find_edited_resources(const Ref<Resource> &p_resource, Set<Ref<Reso
 
 	p_resource->get_property_list(&plist);
 
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (E.type == Variant::OBJECT && E.usage & PROPERTY_USAGE_STORAGE && !(E.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT)) {
 			RES res = p_resource->get(E.name);
 			if (res.is_null()) {
@@ -1883,7 +1883,7 @@ void EditorNode::_dialog_action(String p_file) {
 			// erase
 			List<String> keys;
 			config->get_section_keys(p_file, &keys);
-			for (String &E : keys) {
+			for (const String &E : keys) {
 				config->set_value(p_file, E, Variant());
 			}
 
@@ -2532,7 +2532,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
 			Ref<MeshLibrary> ml(memnew(MeshLibrary));
 			ResourceSaver::get_recognized_extensions(ml, &extensions);
 			file_export_lib->clear_filters();
-			for (String &E : extensions) {
+			for (const String &E : extensions) {
 				file_export_lib->add_filter("*." + E);
 			}
 
@@ -4054,7 +4054,7 @@ void EditorNode::_build_icon_type_cache() {
 	List<StringName> tl;
 	StringName ei = "EditorIcons";
 	theme_base->get_theme()->get_icon_list(ei, &tl);
-	for (StringName &E : tl) {
+	for (const StringName &E : tl) {
 		if (!ClassDB::class_exists(E)) {
 			continue;
 		}
@@ -4783,7 +4783,7 @@ void EditorNode::_update_layouts_menu() {
 	List<String> layouts;
 	config.ptr()->get_sections(&layouts);
 
-	for (String &layout : layouts) {
+	for (const String &layout : layouts) {
 		if (layout == TTR("Default")) {
 			editor_layouts->remove_item(editor_layouts->get_item_index(SETTINGS_LAYOUT_DEFAULT));
 			overridden_default_layout = editor_layouts->get_item_count();
@@ -6738,7 +6738,7 @@ EditorNode::EditorNode() {
 	file_script->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
 	List<String> sexts;
 	ResourceLoader::get_recognized_extensions_for_type("Script", &sexts);
-	for (String &E : sexts) {
+	for (const String &E : sexts) {
 		file_script->add_filter("*." + E);
 	}
 	gui_base->add_child(file_script);

+ 1 - 1
editor/editor_path.cpp

@@ -40,7 +40,7 @@ void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) {
 
 	List<PropertyInfo> pinfo;
 	p_obj->get_property_list(&pinfo);
-	for (PropertyInfo &E : pinfo) {
+	for (const PropertyInfo &E : pinfo) {
 		if (!(E.usage & PROPERTY_USAGE_EDITOR)) {
 			continue;
 		}

+ 5 - 5
editor/editor_resource_picker.cpp

@@ -221,7 +221,7 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {
 			}
 
 			Set<String> valid_extensions;
-			for (String &E : extensions) {
+			for (const String &E : extensions) {
 				valid_extensions.insert(E);
 			}
 
@@ -260,7 +260,7 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {
 			List<PropertyInfo> property_list;
 			edited_resource->get_property_list(&property_list);
 			List<Pair<String, Variant>> propvalues;
-			for (PropertyInfo &pi : property_list) {
+			for (const PropertyInfo &pi : property_list) {
 				Pair<String, Variant> p;
 				if (pi.usage & PROPERTY_USAGE_STORAGE) {
 					p.first = pi.name;
@@ -275,7 +275,7 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {
 			Ref<Resource> unique_resource = Ref<Resource>(Object::cast_to<Resource>(inst));
 			ERR_FAIL_COND(unique_resource.is_null());
 
-			for (Pair<String, Variant> &p : propvalues) {
+			for (const Pair<String, Variant> &p : propvalues) {
 				unique_resource->set(p.first, p.second);
 			}
 
@@ -465,11 +465,11 @@ void EditorResourcePicker::_get_allowed_types(bool p_with_convert, Set<String> *
 		List<StringName> inheriters;
 
 		ClassDB::get_inheriters_from_class(base, &inheriters);
-		for (StringName &E : inheriters) {
+		for (const StringName &E : inheriters) {
 			p_vector->insert(E);
 		}
 
-		for (StringName &E : global_classes) {
+		for (const StringName &E : global_classes) {
 			if (EditorNode::get_editor_data().script_class_is_parent(E, base)) {
 				p_vector->insert(E);
 			}

+ 2 - 2
editor/editor_run.cpp

@@ -228,7 +228,7 @@ Error EditorRun::run(const String &p_scene, const String &p_custom_args, const L
 	}
 
 	printf("Running: %s", exec.utf8().get_data());
-	for (String &E : args) {
+	for (const String &E : args) {
 		printf(" %s", E.utf8().get_data());
 	};
 	printf("\n");
@@ -267,7 +267,7 @@ void EditorRun::stop_child_process(OS::ProcessID p_pid) {
 
 void EditorRun::stop() {
 	if (status != STATUS_STOP && pids.size() > 0) {
-		for (OS::ProcessID &E : pids) {
+		for (const OS::ProcessID &E : pids) {
 			OS::get_singleton()->kill(E);
 		}
 	}

+ 4 - 4
editor/editor_settings.cpp

@@ -759,7 +759,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
 			List<String> keys;
 			p_extra_config->get_section_keys("presets", &keys);
 
-			for (String &key : keys) {
+			for (const String &key : keys) {
 				Variant val = p_extra_config->get_value("presets", key);
 				set(key, val);
 			}
@@ -1013,7 +1013,7 @@ void EditorSettings::setup_network() {
 	String selected = "127.0.0.1";
 
 	// Check that current remote_host is a valid interface address and populate hints.
-	for (IPAddress &ip : local_ip) {
+	for (const IPAddress &ip : local_ip) {
 		// link-local IPv6 addresses don't work, skipping them
 		if (String(ip).begins_with("fe80:0:0:0:")) { // fe80::/64
 			continue;
@@ -1299,7 +1299,7 @@ void EditorSettings::list_text_editor_themes() {
 		memdelete(d);
 
 		custom_themes.sort();
-		for (String &E : custom_themes) {
+		for (const String &E : custom_themes) {
 			themes += "," + E;
 		}
 	}
@@ -1328,7 +1328,7 @@ void EditorSettings::load_text_editor_theme() {
 	List<String> keys;
 	cf->get_section_keys("color_theme", &keys);
 
-	for (String &key : keys) {
+	for (const String &key : keys) {
 		String val = cf->get_value("color_theme", key);
 
 		// don't load if it's not already there!

+ 3 - 3
editor/filesystem_dock.cpp

@@ -135,7 +135,7 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory
 		_sort_file_info_list(file_list);
 
 		// Build the tree.
-		for (FileInfo &fi : file_list) {
+		for (const FileInfo &fi : file_list) {
 			TreeItem *file_item = tree->create_item(subdirectory_item);
 			file_item->set_text(0, fi.name);
 			file_item->set_structured_text_bidi_override(0, STRUCTURED_TEXT_FILE);
@@ -964,7 +964,7 @@ void FileSystemDock::_select_file(const String &p_path, bool p_select_in_favorit
 				List<String> importer_exts;
 				ResourceImporterScene::get_singleton()->get_recognized_extensions(&importer_exts);
 				String extension = fpath.get_extension();
-				for (String &E : importer_exts) {
+				for (const String &E : importer_exts) {
 					if (extension.nocasecmp_to(E) == 0) {
 						is_imported = true;
 						break;
@@ -1413,7 +1413,7 @@ void FileSystemDock::_make_scene_confirm() {
 	ResourceSaver::get_recognized_extensions(sd, &extensions);
 
 	bool extension_correct = false;
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		if (E == extension) {
 			extension_correct = true;
 			break;

+ 2 - 2
editor/groups_editor.cpp

@@ -285,7 +285,7 @@ void GroupDialog::_load_groups(Node *p_current) {
 	List<Node::GroupInfo> gi;
 	p_current->get_groups(&gi);
 
-	for (Node::GroupInfo &E : gi) {
+	for (const Node::GroupInfo &E : gi) {
 		if (!E.persistent) {
 			continue;
 		}
@@ -627,7 +627,7 @@ void GroupsEditor::update_tree() {
 
 	TreeItem *root = tree->create_item();
 
-	for (GroupInfo &gi : groups) {
+	for (const GroupInfo &gi : groups) {
 		if (!gi.persistent) {
 			continue;
 		}

+ 9 - 9
editor/import/resource_importer_scene.cpp

@@ -312,7 +312,7 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, Map<Ref<E
 
 		List<StringName> anims;
 		ap->get_animation_list(&anims);
-		for (StringName &E : anims) {
+		for (const StringName &E : anims) {
 			Ref<Animation> anim = ap->get_animation(E);
 			ERR_CONTINUE(anim.is_null());
 			for (int i = 0; i < anim->get_track_count(); i++) {
@@ -659,7 +659,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
 						}
 
 						int idx = 0;
-						for (Ref<Shape3D> &E : shapes) {
+						for (const Ref<Shape3D> &E : shapes) {
 							CollisionShape3D *cshape = memnew(CollisionShape3D);
 							cshape->set_shape(E);
 							base->add_child(cshape);
@@ -712,7 +712,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
 			//fill node settings for this node with default values
 			List<ImportOption> iopts;
 			get_internal_import_options(INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE, &iopts);
-			for (ImportOption &E : iopts) {
+			for (const ImportOption &E : iopts) {
 				if (!node_settings.has(E.option.name)) {
 					node_settings[E.option.name] = E.default_value;
 				}
@@ -756,7 +756,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
 		} else {
 			List<StringName> anims;
 			ap->get_animation_list(&anims);
-			for (StringName &name : anims) {
+			for (const StringName &name : anims) {
 				Ref<Animation> anim = ap->get_animation(name);
 				if (p_animation_data.has(name)) {
 					Dictionary anim_settings = p_animation_data[name];
@@ -764,7 +764,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
 						//fill with default values
 						List<ImportOption> iopts;
 						get_internal_import_options(INTERNAL_IMPORT_CATEGORY_ANIMATION, &iopts);
-						for (ImportOption &F : iopts) {
+						for (const ImportOption &F : iopts) {
 							if (!anim_settings.has(F.option.name)) {
 								anim_settings[F.option.name] = F.default_value;
 							}
@@ -935,7 +935,7 @@ void ResourceImporterScene::_create_clips(AnimationPlayer *anim, const Array &p_
 void ResourceImporterScene::_optimize_animations(AnimationPlayer *anim, float p_max_lin_error, float p_max_ang_error, float p_max_angle) {
 	List<StringName> anim_names;
 	anim->get_animation_list(&anim_names);
-	for (StringName &E : anim_names) {
+	for (const StringName &E : anim_names) {
 		Ref<Animation> a = anim->get_animation(E);
 		a->optimize(p_max_lin_error, p_max_ang_error, Math::deg2rad(p_max_angle));
 	}
@@ -1045,7 +1045,7 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in
 
 	String script_ext_hint;
 
-	for (String &E : script_extentions) {
+	for (const String &E : script_extentions) {
 		if (script_ext_hint != "") {
 			script_ext_hint += ",";
 		}
@@ -1088,7 +1088,7 @@ Node *ResourceImporterScene::import_scene_from_other_importer(EditorSceneImporte
 		List<String> extensions;
 		E->get()->get_extensions(&extensions);
 
-		for (String &F : extensions) {
+		for (const String &F : extensions) {
 			if (F.to_lower() == ext) {
 				importer = E;
 				break;
@@ -1118,7 +1118,7 @@ Ref<Animation> ResourceImporterScene::import_animation_from_other_importer(Edito
 		List<String> extensions;
 		E->get()->get_extensions(&extensions);
 
-		for (String &F : extensions) {
+		for (const String &F : extensions) {
 			if (F.to_lower() == ext) {
 				importer = E;
 				break;

+ 4 - 4
editor/import/scene_import_settings.cpp

@@ -305,7 +305,7 @@ void SceneImportSettings::_fill_scene(Node *p_node, TreeItem *p_parent_item) {
 	if (anim_node) {
 		List<StringName> animations;
 		anim_node->get_animation_list(&animations);
-		for (StringName &E : animations) {
+		for (const StringName &E : animations) {
 			_fill_animation(scene_tree, anim_node->get_animation(E), E, item);
 		}
 	}
@@ -394,7 +394,7 @@ void SceneImportSettings::_load_default_subresource_settings(Map<StringName, Var
 			d = d[p_import_id];
 			List<ResourceImporterScene::ImportOption> options;
 			ResourceImporterScene::get_singleton()->get_internal_import_options(p_category, &options);
-			for (ResourceImporterScene::ImportOption &E : options) {
+			for (const ResourceImporterScene::ImportOption &E : options) {
 				String key = E.option.name;
 				if (d.has(key)) {
 					settings[key] = d[key];
@@ -440,7 +440,7 @@ void SceneImportSettings::open_settings(const String &p_path) {
 		if (err == OK) {
 			List<String> keys;
 			config->get_section_keys("params", &keys);
-			for (String &E : keys) {
+			for (const String &E : keys) {
 				Variant value = config->get_value("params", E);
 				if (E == "_subresources") {
 					base_subresource_settings = value;
@@ -605,7 +605,7 @@ void SceneImportSettings::_select(Tree *p_from, String p_type, String p_id) {
 	scene_import_settings_data->defaults.clear();
 	scene_import_settings_data->current.clear();
 
-	for (ResourceImporter::ImportOption &E : options) {
+	for (const ResourceImporter::ImportOption &E : options) {
 		scene_import_settings_data->defaults[E.option.name] = E.default_value;
 		//needed for visibility toggling (fails if something is missing)
 		if (scene_import_settings_data->settings->has(E.option.name)) {

+ 1 - 1
editor/import/scene_importer_mesh.cpp

@@ -79,7 +79,7 @@ void EditorSceneImporterMesh::add_surface(Mesh::PrimitiveType p_primitive, const
 
 	List<Variant> lods;
 	p_lods.get_key_list(&lods);
-	for (Variant &E : lods) {
+	for (const Variant &E : lods) {
 		ERR_CONTINUE(!E.is_num());
 		Surface::LOD lod;
 		lod.distance = E;

+ 1 - 1
editor/import_defaults_editor.cpp

@@ -125,7 +125,7 @@ void ImportDefaultsEditor::_update_importer() {
 			d = ProjectSettings::get_singleton()->get("importer_defaults/" + importer->get_importer_name());
 		}
 
-		for (ResourceImporter::ImportOption &E : options) {
+		for (const ResourceImporter::ImportOption &E : options) {
 			settings->properties.push_back(E.option);
 			if (d.has(E.option.name)) {
 				settings->values[E.option.name] = d[E.option.name];

+ 10 - 10
editor/import_dock.cpp

@@ -119,7 +119,7 @@ void ImportDock::set_edit_path(const String &p_path) {
 
 	import_as->clear();
 
-	for (Pair<String, String> &E : importer_names) {
+	for (const Pair<String, String> &E : importer_names) {
 		import_as->add_item(E.first);
 		import_as->set_item_metadata(import_as->get_item_count() - 1, E.second);
 		if (E.second == importer_name) {
@@ -153,7 +153,7 @@ void ImportDock::_update_options(const Ref<ConfigFile> &p_config) {
 	params->checking = params->paths.size() > 1;
 	params->checked.clear();
 
-	for (ResourceImporter::ImportOption &E : options) {
+	for (const ResourceImporter::ImportOption &E : options) {
 		params->properties.push_back(E.option);
 		if (p_config.is_valid() && p_config->has_section_key("params", E.option.name)) {
 			params->values[E.option.name] = p_config->get_value("params", E.option.name);
@@ -201,7 +201,7 @@ void ImportDock::set_edit_multiple_paths(const Vector<String> &p_paths) {
 		List<String> keys;
 		config->get_section_keys("params", &keys);
 
-		for (String &E : keys) {
+		for (const String &E : keys) {
 			if (!value_frequency.has(E)) {
 				value_frequency[E] = Dictionary();
 			}
@@ -226,7 +226,7 @@ void ImportDock::set_edit_multiple_paths(const Vector<String> &p_paths) {
 	params->checking = true;
 	params->checked.clear();
 
-	for (ResourceImporter::ImportOption &E : options) {
+	for (const ResourceImporter::ImportOption &E : options) {
 		params->properties.push_back(E.option);
 
 		if (value_frequency.has(E.option.name)) {
@@ -235,7 +235,7 @@ void ImportDock::set_edit_multiple_paths(const Vector<String> &p_paths) {
 			List<Variant> v;
 			d.get_key_list(&v);
 			Variant value;
-			for (Variant &F : v) {
+			for (const Variant &F : v) {
 				int f = d[F];
 				if (f > freq) {
 					value = F;
@@ -262,7 +262,7 @@ void ImportDock::set_edit_multiple_paths(const Vector<String> &p_paths) {
 
 	import_as->clear();
 
-	for (Pair<String, String> &E : importer_names) {
+	for (const Pair<String, String> &E : importer_names) {
 		import_as->add_item(E.first);
 		import_as->set_item_metadata(import_as->get_item_count() - 1, E.second);
 		if (E.second == params->importer->get_importer_name()) {
@@ -363,7 +363,7 @@ void ImportDock::_preset_selected(int p_idx) {
 			if (params->checking) {
 				params->checked.clear();
 			}
-			for (Variant &E : v) {
+			for (const Variant &E : v) {
 				params->values[E] = d[E];
 				if (params->checking) {
 					params->checked.insert(E);
@@ -384,7 +384,7 @@ void ImportDock::_preset_selected(int p_idx) {
 			if (params->checking) {
 				params->checked.clear();
 			}
-			for (ResourceImporter::ImportOption &E : options) {
+			for (const ResourceImporter::ImportOption &E : options) {
 				params->values[E.option.name] = E.default_value;
 				if (params->checking) {
 					params->checked.insert(E.option.name);
@@ -486,7 +486,7 @@ void ImportDock::_reimport() {
 
 			if (params->checking && config->get_value("remap", "importer") == params->importer->get_importer_name()) {
 				//update only what is edited (checkboxes) if the importer is the same
-				for (PropertyInfo &E : params->properties) {
+				for (const PropertyInfo &E : params->properties) {
 					if (params->checked.has(E.name)) {
 						config->set_value("params", E.name, params->values[E.name]);
 					}
@@ -498,7 +498,7 @@ void ImportDock::_reimport() {
 					config->erase_section("params");
 				}
 
-				for (PropertyInfo &E : params->properties) {
+				for (const PropertyInfo &E : params->properties) {
 					config->set_value("params", E.name, params->values[E.name]);
 				}
 			}

+ 1 - 1
editor/inspector_dock.cpp

@@ -87,7 +87,7 @@ void InspectorDock::_menu_option(int p_option) {
 				List<PropertyInfo> props;
 				current->get_property_list(&props);
 				Map<RES, RES> duplicates;
-				for (PropertyInfo &E : props) {
+				for (const PropertyInfo &E : props) {
 					if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 						continue;
 					}

+ 4 - 4
editor/localization_editor.cpp

@@ -43,13 +43,13 @@ void LocalizationEditor::_notification(int p_what) {
 
 		List<String> tfn;
 		ResourceLoader::get_recognized_extensions_for_type("Translation", &tfn);
-		for (String &E : tfn) {
+		for (const String &E : tfn) {
 			translation_file_open->add_filter("*." + E);
 		}
 
 		List<String> rfn;
 		ResourceLoader::get_recognized_extensions_for_type("Resource", &rfn);
-		for (String &E : rfn) {
+		for (const String &E : rfn) {
 			translation_res_file_open_dialog->add_filter("*." + E);
 			translation_res_option_file_open_dialog->add_filter("*." + E);
 		}
@@ -430,7 +430,7 @@ void LocalizationEditor::_update_pot_file_extensions() {
 	pot_file_open_dialog->clear_filters();
 	List<String> translation_parse_file_extensions;
 	EditorTranslationParser::get_singleton()->get_recognized_extensions(&translation_parse_file_extensions);
-	for (String &E : translation_parse_file_extensions) {
+	for (const String &E : translation_parse_file_extensions) {
 		pot_file_open_dialog->add_filter("*." + E);
 	}
 }
@@ -560,7 +560,7 @@ void LocalizationEditor::update_translations() {
 		List<Variant> rk;
 		remaps.get_key_list(&rk);
 		Vector<String> keys;
-		for (Variant &E : rk) {
+		for (const Variant &E : rk) {
 			keys.push_back(E);
 		}
 		keys.sort();

+ 2 - 2
editor/multi_node_edit.cpp

@@ -143,7 +143,7 @@ void MultiNodeEdit::_get_property_list(List<PropertyInfo> *p_list) const {
 		List<PropertyInfo> plist;
 		n->get_property_list(&plist, true);
 
-		for (PropertyInfo &F : plist) {
+		for (const PropertyInfo &F : plist) {
 			if (F.name == "script") {
 				continue; //added later manually, since this is intercepted before being set (check Variant Object::get() )
 			}
@@ -164,7 +164,7 @@ void MultiNodeEdit::_get_property_list(List<PropertyInfo> *p_list) const {
 		nc++;
 	}
 
-	for (PLData *E : data_list) {
+	for (const PLData *E : data_list) {
 		if (nc == E->uses) {
 			p_list->push_back(E->info);
 		}

+ 3 - 3
editor/plugins/animation_blend_space_1d_editor.cpp

@@ -72,14 +72,14 @@ void AnimationNodeBlendSpace1DEditor::_blend_space_gui_input(const Ref<InputEven
 				List<StringName> names;
 				ap->get_animation_list(&names);
 
-				for (StringName &E : names) {
+				for (const StringName &E : names) {
 					animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E);
 					animations_to_add.push_back(E);
 				}
 			}
 		}
 
-		for (StringName &E : classes) {
+		for (const StringName &E : classes) {
 			String name = String(E).replace_first("AnimationNode", "");
 			if (name == "Animation") {
 				continue;
@@ -373,7 +373,7 @@ void AnimationNodeBlendSpace1DEditor::_add_menu_type(int p_index) {
 		open_file->clear_filters();
 		List<String> filters;
 		ResourceLoader::get_recognized_extensions_for_type("AnimationRootNode", &filters);
-		for (String &E : filters) {
+		for (const String &E : filters) {
 			open_file->add_filter("*." + E);
 		}
 		open_file->popup_file_dialog();

+ 3 - 3
editor/plugins/animation_blend_space_2d_editor.cpp

@@ -96,14 +96,14 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
 			if (ap) {
 				List<StringName> names;
 				ap->get_animation_list(&names);
-				for (StringName &E : names) {
+				for (const StringName &E : names) {
 					animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E);
 					animations_to_add.push_back(E);
 				}
 			}
 		}
 
-		for (StringName &E : classes) {
+		for (const StringName &E : classes) {
 			String name = String(E).replace_first("AnimationNode", "");
 			if (name == "Animation") {
 				continue; // nope
@@ -295,7 +295,7 @@ void AnimationNodeBlendSpace2DEditor::_add_menu_type(int p_index) {
 		open_file->clear_filters();
 		List<String> filters;
 		ResourceLoader::get_recognized_extensions_for_type("AnimationRootNode", &filters);
-		for (String &E : filters) {
+		for (const String &E : filters) {
 			open_file->add_filter("*." + E);
 		}
 		open_file->popup_file_dialog();

+ 10 - 10
editor/plugins/animation_blend_tree_editor_plugin.cpp

@@ -121,7 +121,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
 	List<StringName> nodes;
 	blend_tree->get_node_list(&nodes);
 
-	for (StringName &E : nodes) {
+	for (const StringName &E : nodes) {
 		GraphNode *node = memnew(GraphNode);
 		graph->add_child(node);
 
@@ -155,7 +155,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
 
 		List<PropertyInfo> pinfo;
 		agnode->get_parameter_list(&pinfo);
-		for (PropertyInfo &F : pinfo) {
+		for (const PropertyInfo &F : pinfo) {
 			if (!(F.usage & PROPERTY_USAGE_EDITOR)) {
 				continue;
 			}
@@ -212,7 +212,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
 					List<StringName> anims;
 					ap->get_animation_list(&anims);
 
-					for (StringName &F : anims) {
+					for (const StringName &F : anims) {
 						mb->get_popup()->add_item(F);
 						options.push_back(F);
 					}
@@ -246,7 +246,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
 	List<AnimationNodeBlendTree::NodeConnection> connections;
 	blend_tree->get_node_connections(&connections);
 
-	for (AnimationNodeBlendTree::NodeConnection &E : connections) {
+	for (const AnimationNodeBlendTree::NodeConnection &E : connections) {
 		StringName from = E.output_node;
 		StringName to = E.input_node;
 		int to_idx = E.input_index;
@@ -274,7 +274,7 @@ void AnimationNodeBlendTreeEditor::_add_node(int p_idx) {
 		open_file->clear_filters();
 		List<String> filters;
 		ResourceLoader::get_recognized_extensions_for_type("AnimationNode", &filters);
-		for (String &E : filters) {
+		for (const String &E : filters) {
 			open_file->add_filter("*." + E);
 		}
 		open_file->popup_file_dialog();
@@ -394,7 +394,7 @@ void AnimationNodeBlendTreeEditor::_delete_request(const String &p_which) {
 	List<AnimationNodeBlendTree::NodeConnection> conns;
 	blend_tree->get_node_connections(&conns);
 
-	for (AnimationNodeBlendTree::NodeConnection &E : conns) {
+	for (const AnimationNodeBlendTree::NodeConnection &E : conns) {
 		if (E.output_node == p_which || E.input_node == p_which) {
 			undo_redo->add_undo_method(blend_tree.ptr(), "connect_node", E.input_node, E.input_index, E.output_node);
 		}
@@ -423,7 +423,7 @@ void AnimationNodeBlendTreeEditor::_delete_nodes_request() {
 
 	undo_redo->create_action(TTR("Delete Node(s)"));
 
-	for (StringName &F : to_erase) {
+	for (const StringName &F : to_erase) {
 		_delete_request(F);
 	}
 
@@ -517,7 +517,7 @@ bool AnimationNodeBlendTreeEditor::_update_filters(const Ref<AnimationNode> &ano
 		List<StringName> animations;
 		player->get_animation_list(&animations);
 
-		for (StringName &E : animations) {
+		for (const StringName &E : animations) {
 			Ref<Animation> anim = player->get_animation(E);
 			for (int i = 0; i < anim->get_track_count(); i++) {
 				String track_path = anim->track_get_path(i);
@@ -718,7 +718,7 @@ void AnimationNodeBlendTreeEditor::_notification(int p_what) {
 
 		List<AnimationNodeBlendTree::NodeConnection> conns;
 		blend_tree->get_node_connections(&conns);
-		for (AnimationNodeBlendTree::NodeConnection &E : conns) {
+		for (const AnimationNodeBlendTree::NodeConnection &E : conns) {
 			float activity = 0;
 			StringName path = AnimationTreeEditor::get_singleton()->get_base_path() + E.input_node;
 			if (AnimationTreeEditor::get_singleton()->get_tree() && !AnimationTreeEditor::get_singleton()->get_tree()->is_state_invalid()) {
@@ -828,7 +828,7 @@ void AnimationNodeBlendTreeEditor::_node_renamed(const String &p_text, Ref<Anima
 	List<AnimationNodeBlendTree::NodeConnection> connections;
 	blend_tree->get_node_connections(&connections);
 
-	for (AnimationNodeBlendTree::NodeConnection &E : connections) {
+	for (const AnimationNodeBlendTree::NodeConnection &E : connections) {
 		StringName from = E.output_node;
 		StringName to = E.input_node;
 		int to_idx = E.input_index;

+ 4 - 4
editor/plugins/animation_player_editor_plugin.cpp

@@ -350,7 +350,7 @@ void AnimationPlayerEditor::_animation_load() {
 	List<String> extensions;
 
 	ResourceLoader::get_recognized_extensions_for_type("Animation", &extensions);
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		file->add_filter("*." + E + " ; " + E.to_upper());
 	}
 
@@ -584,7 +584,7 @@ void AnimationPlayerEditor::_animation_blend() {
 	blend_editor.next->clear();
 	blend_editor.next->add_item("", i);
 
-	for (StringName &to : anims) {
+	for (const StringName &to : anims) {
 		TreeItem *blend = blend_editor.tree->create_item(root);
 		blend->set_editable(0, false);
 		blend->set_editable(1, true);
@@ -829,7 +829,7 @@ void AnimationPlayerEditor::_update_player() {
 	}
 
 	int active_idx = -1;
-	for (StringName &E : animlist) {
+	for (const StringName &E : animlist) {
 		Ref<Texture2D> icon;
 		if (E == player->get_autoplay()) {
 			if (E == "RESET") {
@@ -965,7 +965,7 @@ void AnimationPlayerEditor::_animation_duplicate() {
 	Ref<Animation> new_anim = memnew(Animation);
 	List<PropertyInfo> plist;
 	anim->get_property_list(&plist);
-	for (PropertyInfo &E : plist) {
+	for (const PropertyInfo &E : plist) {
 		if (E.usage & PROPERTY_USAGE_STORAGE) {
 			new_anim->set(E.name, anim->get(E.name));
 		}

+ 5 - 5
editor/plugins/animation_state_machine_editor.cpp

@@ -93,14 +93,14 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv
 			if (ap) {
 				List<StringName> names;
 				ap->get_animation_list(&names);
-				for (StringName &E : names) {
+				for (const StringName &E : names) {
 					animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E);
 					animations_to_add.push_back(E);
 				}
 			}
 		}
 
-		for (StringName &E : classes) {
+		for (const StringName &E : classes) {
 			String name = String(E).replace_first("AnimationNode", "");
 			if (name == "Animation") {
 				continue; // nope
@@ -318,7 +318,7 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv
 			float best_d_x = 1e20;
 			float best_d_y = 1e20;
 
-			for (StringName &E : nodes) {
+			for (const StringName &E : nodes) {
 				if (E == selected_node) {
 					continue;
 				}
@@ -409,7 +409,7 @@ void AnimationNodeStateMachineEditor::_add_menu_type(int p_index) {
 		open_file->clear_filters();
 		List<String> filters;
 		ResourceLoader::get_recognized_extensions_for_type("AnimationRootNode", &filters);
-		for (String &E : filters) {
+		for (const String &E : filters) {
 			open_file->add_filter("*." + E);
 		}
 		open_file->popup_file_dialog();
@@ -606,7 +606,7 @@ void AnimationNodeStateMachineEditor::_state_machine_draw() {
 	}
 
 	//pre pass nodes so we know the rectangles
-	for (StringName &E : nodes) {
+	for (const StringName &E : nodes) {
 		Ref<AnimationNode> anode = state_machine->get_node(E);
 		String name = E;
 		bool needs_editor = EditorNode::get_singleton()->item_has_editor(anode.ptr());

+ 1 - 1
editor/plugins/animation_tree_editor_plugin.cpp

@@ -215,7 +215,7 @@ Vector<String> AnimationTreeEditor::get_animation_list() {
 	List<StringName> anims;
 	ap->get_animation_list(&anims);
 	Vector<String> ret;
-	for (StringName &E : anims) {
+	for (const StringName &E : anims) {
 		ret.push_back(E);
 	}
 

+ 4 - 4
editor/plugins/canvas_item_editor_plugin.cpp

@@ -399,7 +399,7 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, unsig
 	if ((is_snap_active && snap_other_nodes && (p_modes & SNAP_OTHER_NODES)) || (p_forced_modes & SNAP_OTHER_NODES)) {
 		Transform2D to_snap_transform = Transform2D();
 		List<const CanvasItem *> exceptions = List<const CanvasItem *>();
-		for (CanvasItem *E : p_other_nodes_exceptions) {
+		for (const CanvasItem *E : p_other_nodes_exceptions) {
 			exceptions.push_back(E);
 		}
 		if (p_self_canvas_item) {
@@ -842,7 +842,7 @@ void CanvasItemEditor::_commit_canvas_item_state(List<CanvasItem *> p_canvas_ite
 			undo_redo->add_do_method(canvas_item, "_edit_set_state", canvas_item->_edit_get_state());
 			undo_redo->add_undo_method(canvas_item, "_edit_set_state", se->undo_state);
 			if (commit_bones) {
-				for (Dictionary &F : se->pre_drag_bones_undo_state) {
+				for (const Dictionary &F : se->pre_drag_bones_undo_state) {
 					canvas_item = Object::cast_to<CanvasItem>(canvas_item->get_parent());
 					undo_redo->add_do_method(canvas_item, "_edit_set_state", canvas_item->_edit_get_state());
 					undo_redo->add_undo_method(canvas_item, "_edit_set_state", F);
@@ -3555,7 +3555,7 @@ void CanvasItemEditor::_draw_hover() {
 
 		Point2 pos = transform.xform(hovering_results[i].position) - Point2(0, item_size.y) + (Point2(node_icon->get_size().x, -node_icon->get_size().y) / 4);
 		// Rectify the position to avoid overlapping items
-		for (Rect2 &E : previous_rects) {
+		for (const Rect2 &E : previous_rects) {
 			if (E.intersects(Rect2(pos, item_size))) {
 				pos.y = E.get_position().y - item_size.y;
 			}
@@ -4699,7 +4699,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
 			}
 
 			undo_redo->create_action(TTR("Paste Pose"));
-			for (PoseClipboard &E : pose_clipboard) {
+			for (const PoseClipboard &E : pose_clipboard) {
 				Node2D *n2d = Object::cast_to<Node2D>(ObjectDB::get_instance(E.id));
 				if (!n2d) {
 					continue;

+ 1 - 1
editor/plugins/cpu_particles_2d_editor_plugin.cpp

@@ -253,7 +253,7 @@ CPUParticles2DEditorPlugin::CPUParticles2DEditorPlugin(EditorNode *p_node) {
 	file = memnew(EditorFileDialog);
 	List<String> ext;
 	ImageLoader::get_recognized_extensions(&ext);
-	for (String &E : ext) {
+	for (const String &E : ext) {
 		file->add_filter("*." + E + "; " + E.to_upper());
 	}
 	file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);

+ 1 - 1
editor/plugins/editor_preview_plugins.cpp

@@ -490,7 +490,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
 	Set<String> control_flow_keywords;
 	Set<String> keywords;
 
-	for (String &E : kwors) {
+	for (const String &E : kwors) {
 		if (scr->get_language()->is_control_flow_keyword(E)) {
 			control_flow_keywords.insert(E);
 		} else {

+ 1 - 1
editor/plugins/gpu_particles_2d_editor_plugin.cpp

@@ -361,7 +361,7 @@ GPUParticles2DEditorPlugin::GPUParticles2DEditorPlugin(EditorNode *p_node) {
 	file = memnew(EditorFileDialog);
 	List<String> ext;
 	ImageLoader::get_recognized_extensions(&ext);
-	for (String &E : ext) {
+	for (const String &E : ext) {
 		file->add_filter("*." + E + "; " + E.to_upper());
 	}
 	file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);

+ 6 - 6
editor/plugins/material_editor_plugin.cpp

@@ -265,7 +265,7 @@ Ref<Resource> StandardMaterial3DConversionPlugin::convert(const Ref<Resource> &p
 	List<PropertyInfo> params;
 	RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
 
-	for (PropertyInfo &E : params) {
+	for (const PropertyInfo &E : params) {
 		// Texture parameter has to be treated specially since StandardMaterial3D saved it
 		// as RID but ShaderMaterial needs Texture itself
 		Ref<Texture2D> texture = mat->get_texture_by_name(E.name);
@@ -309,7 +309,7 @@ Ref<Resource> ParticlesMaterialConversionPlugin::convert(const Ref<Resource> &p_
 	List<PropertyInfo> params;
 	RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
 
-	for (PropertyInfo &E : params) {
+	for (const PropertyInfo &E : params) {
 		Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
 		smat->set_shader_param(E.name, value);
 	}
@@ -346,7 +346,7 @@ Ref<Resource> CanvasItemMaterialConversionPlugin::convert(const Ref<Resource> &p
 	List<PropertyInfo> params;
 	RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
 
-	for (PropertyInfo &E : params) {
+	for (const PropertyInfo &E : params) {
 		Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
 		smat->set_shader_param(E.name, value);
 	}
@@ -383,7 +383,7 @@ Ref<Resource> ProceduralSkyMaterialConversionPlugin::convert(const Ref<Resource>
 	List<PropertyInfo> params;
 	RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
 
-	for (PropertyInfo &E : params) {
+	for (const PropertyInfo &E : params) {
 		Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
 		smat->set_shader_param(E.name, value);
 	}
@@ -420,7 +420,7 @@ Ref<Resource> PanoramaSkyMaterialConversionPlugin::convert(const Ref<Resource> &
 	List<PropertyInfo> params;
 	RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
 
-	for (PropertyInfo &E : params) {
+	for (const PropertyInfo &E : params) {
 		Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
 		smat->set_shader_param(E.name, value);
 	}
@@ -457,7 +457,7 @@ Ref<Resource> PhysicalSkyMaterialConversionPlugin::convert(const Ref<Resource> &
 	List<PropertyInfo> params;
 	RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
 
-	for (PropertyInfo &E : params) {
+	for (const PropertyInfo &E : params) {
 		Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
 		smat->set_shader_param(E.name, value);
 	}

+ 1 - 1
editor/plugins/node_3d_editor_gizmos.cpp

@@ -4746,7 +4746,7 @@ void NavigationRegion3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
 		Vector3 *tw = tmeshfaces.ptrw();
 		int tidx = 0;
 
-		for (Face3 &f : faces) {
+		for (const Face3 &f : faces) {
 			for (int j = 0; j < 3; j++) {
 				tw[tidx++] = f.vertex[j];
 				_EdgeKey ek;

+ 2 - 2
editor/plugins/resource_preloader_editor_plugin.cpp

@@ -181,13 +181,13 @@ void ResourcePreloaderEditor::_update_library() {
 	preloader->get_resource_list(&rnames);
 
 	List<String> names;
-	for (StringName &E : rnames) {
+	for (const StringName &E : rnames) {
 		names.push_back(E);
 	}
 
 	names.sort();
 
-	for (String &E : names) {
+	for (const String &E : names) {
 		TreeItem *ti = tree->create_item(root);
 		ti->set_cell_mode(0, TreeItem::CELL_MODE_STRING);
 		ti->set_editable(0, true);

+ 1 - 1
editor/plugins/root_motion_editor_plugin.cpp

@@ -70,7 +70,7 @@ void EditorPropertyRootMotion::_node_assign() {
 		List<StringName> animations;
 		player->get_animation_list(&animations);
 
-		for (StringName &E : animations) {
+		for (const StringName &E : animations) {
 			Ref<Animation> anim = player->get_animation(E);
 			for (int i = 0; i < anim->get_track_count(); i++) {
 				paths.insert(anim->track_get_path(i));

+ 8 - 8
editor/plugins/script_editor_plugin.cpp

@@ -103,7 +103,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 	const Color type_color = EDITOR_GET("text_editor/highlighting/engine_type_color");
 	List<StringName> types;
 	ClassDB::get_class_list(&types);
-	for (StringName &E : types) {
+	for (const StringName &E : types) {
 		String n = E;
 		if (n.begins_with("_")) {
 			n = n.substr(1, n.length());
@@ -115,7 +115,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 	const Color usertype_color = EDITOR_GET("text_editor/highlighting/user_type_color");
 	List<StringName> global_classes;
 	ScriptServer::get_global_class_list(&global_classes);
-	for (StringName &E : global_classes) {
+	for (const StringName &E : global_classes) {
 		highlighter->add_keyword_color(E, usertype_color);
 	}
 
@@ -134,7 +134,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 		const Color basetype_color = EDITOR_GET("text_editor/highlighting/base_type_color");
 		List<String> core_types;
 		script->get_language()->get_core_type_words(&core_types);
-		for (String &E : core_types) {
+		for (const String &E : core_types) {
 			highlighter->add_keyword_color(E, basetype_color);
 		}
 
@@ -143,7 +143,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 		const Color control_flow_keyword_color = EDITOR_GET("text_editor/highlighting/control_flow_keyword_color");
 		List<String> keywords;
 		script->get_language()->get_reserved_words(&keywords);
-		for (String &E : keywords) {
+		for (const String &E : keywords) {
 			if (script->get_language()->is_control_flow_keyword(E)) {
 				highlighter->add_keyword_color(E, control_flow_keyword_color);
 			} else {
@@ -157,7 +157,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 		if (instance_base != StringName()) {
 			List<PropertyInfo> plist;
 			ClassDB::get_property_list(instance_base, &plist);
-			for (PropertyInfo &E : plist) {
+			for (const PropertyInfo &E : plist) {
 				String name = E.name;
 				if (E.usage & PROPERTY_USAGE_CATEGORY || E.usage & PROPERTY_USAGE_GROUP || E.usage & PROPERTY_USAGE_SUBGROUP) {
 					continue;
@@ -170,7 +170,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 
 			List<String> clist;
 			ClassDB::get_integer_constant_list(instance_base, &clist);
-			for (String &E : clist) {
+			for (const String &E : clist) {
 				highlighter->add_member_keyword_color(E, member_variable_color);
 			}
 		}
@@ -179,7 +179,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 		const Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color");
 		List<String> comments;
 		script->get_language()->get_comment_delimiters(&comments);
-		for (String &comment : comments) {
+		for (const String &comment : comments) {
 			String beg = comment.get_slice(" ", 0);
 			String end = comment.get_slice_count(" ") > 1 ? comment.get_slice(" ", 1) : String();
 			highlighter->add_color_region(beg, end, comment_color, end == "");
@@ -189,7 +189,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
 		const Color string_color = EDITOR_GET("text_editor/highlighting/string_color");
 		List<String> strings;
 		script->get_language()->get_string_delimiters(&strings);
-		for (String &string : strings) {
+		for (const String &string : strings) {
 			String beg = string.get_slice(" ", 0);
 			String end = string.get_slice_count(" ") > 1 ? string.get_slice(" ", 1) : String();
 			highlighter->add_color_region(beg, end, string_color, end == "");

+ 11 - 11
editor/plugins/script_text_editor.cpp

@@ -50,7 +50,7 @@ void ConnectionInfoDialog::popup_connections(String p_method, Vector<Node *> p_n
 		List<Connection> all_connections;
 		p_nodes[i]->get_signals_connected_to_this(&all_connections);
 
-		for (Connection &connection : all_connections) {
+		for (const Connection &connection : all_connections) {
 			if (connection.callable.get_method() != p_method) {
 				continue;
 			}
@@ -114,7 +114,7 @@ Vector<String> ScriptTextEditor::get_functions() {
 	if (script->get_language()->validate(text, script->get_path(), &fnc)) {
 		//if valid rewrite functions to latest
 		functions.clear();
-		for (String &E : fnc) {
+		for (const String &E : fnc) {
 			functions.push_back(E);
 		}
 	}
@@ -201,7 +201,7 @@ void ScriptTextEditor::_set_theme_for_script() {
 	List<String> strings;
 	script->get_language()->get_string_delimiters(&strings);
 	text_edit->clear_string_delimiters();
-	for (String &string : strings) {
+	for (const String &string : strings) {
 		String beg = string.get_slice(" ", 0);
 		String end = string.get_slice_count(" ") > 1 ? string.get_slice(" ", 1) : String();
 		text_edit->add_string_delimiter(beg, end, end == "");
@@ -210,7 +210,7 @@ void ScriptTextEditor::_set_theme_for_script() {
 	List<String> comments;
 	script->get_language()->get_comment_delimiters(&comments);
 	text_edit->clear_comment_delimiters();
-	for (String &comment : comments) {
+	for (const String &comment : comments) {
 		String beg = comment.get_slice(" ", 0);
 		String end = comment.get_slice_count(" ") > 1 ? comment.get_slice(" ", 1) : String();
 		text_edit->add_comment_delimiter(beg, end, end == "");
@@ -413,7 +413,7 @@ void ScriptTextEditor::_validate_script() {
 		}
 
 		functions.clear();
-		for (String &E : fnc) {
+		for (const String &E : fnc) {
 			functions.push_back(E);
 		}
 		script_is_valid = true;
@@ -428,7 +428,7 @@ void ScriptTextEditor::_validate_script() {
 		Node *base = get_tree()->get_edited_scene_root();
 		if (base && missing_connections.size() > 0) {
 			warnings_panel->push_table(1);
-			for (Connection &connection : missing_connections) {
+			for (const Connection &connection : missing_connections) {
 				String base_path = base->get_name();
 				String source_path = base == connection.signal.get_object() ? base_path : base_path + "/" + base->get_path_to(Object::cast_to<Node>(connection.signal.get_object()));
 				String target_path = base == connection.callable.get_object() ? base_path : base_path + "/" + base->get_path_to(Object::cast_to<Node>(connection.callable.get_object()));
@@ -450,7 +450,7 @@ void ScriptTextEditor::_validate_script() {
 
 	// Add script warnings.
 	warnings_panel->push_table(3);
-	for (ScriptLanguage::Warning &w : warnings) {
+	for (const ScriptLanguage::Warning &w : warnings) {
 		Dictionary ignore_meta;
 		ignore_meta["line"] = w.start_line;
 		ignore_meta["code"] = w.string_code.to_lower();
@@ -480,7 +480,7 @@ void ScriptTextEditor::_validate_script() {
 
 	errors_panel->clear();
 	errors_panel->push_table(2);
-	for (ScriptLanguage::ScriptError &err : errors) {
+	for (const ScriptLanguage::ScriptError &err : errors) {
 		errors_panel->push_cell();
 		errors_panel->push_meta(err.line - 1);
 		errors_panel->push_color(warnings_panel->get_theme_color(SNAME("error_color"), SNAME("Editor")));
@@ -501,7 +501,7 @@ void ScriptTextEditor::_validate_script() {
 		if (errors.is_empty()) {
 			te->set_line_background_color(i, Color(0, 0, 0, 0));
 		} else {
-			for (ScriptLanguage::ScriptError &E : errors) {
+			for (const ScriptLanguage::ScriptError &E : errors) {
 				bool error_line = i == E.line - 1;
 				te->set_line_background_color(i, error_line ? marked_line_color : Color(0, 0, 0, 0));
 				if (error_line) {
@@ -900,7 +900,7 @@ void ScriptTextEditor::_update_connected_methods() {
 		List<Connection> connections;
 		nodes[i]->get_signals_connected_to_this(&connections);
 
-		for (Connection &connection : connections) {
+		for (const Connection &connection : connections) {
 			if (!(connection.flags & CONNECT_PERSIST)) {
 				continue;
 			}
@@ -1275,7 +1275,7 @@ void ScriptTextEditor::_edit_option_toggle_inline_comment() {
 	List<String> comment_delimiters;
 	script->get_language()->get_comment_delimiters(&comment_delimiters);
 
-	for (String &script_delimiter : comment_delimiters) {
+	for (const String &script_delimiter : comment_delimiters) {
 		if (script_delimiter.find(" ") == -1) {
 			delimiter = script_delimiter;
 			break;

+ 2 - 2
editor/plugins/shader_editor_plugin.cpp

@@ -118,7 +118,7 @@ void ShaderTextEditor::_load_theme_settings() {
 	const Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color");
 	const Color control_flow_keyword_color = EDITOR_GET("text_editor/highlighting/control_flow_keyword_color");
 
-	for (String &E : keywords) {
+	for (const String &E : keywords) {
 		if (ShaderLanguage::is_control_flow_keyword(E)) {
 			syntax_highlighter->add_keyword_color(E, control_flow_keyword_color);
 		} else {
@@ -144,7 +144,7 @@ void ShaderTextEditor::_load_theme_settings() {
 
 	const Color member_variable_color = EDITOR_GET("text_editor/highlighting/member_variable_color");
 
-	for (String &E : built_ins) {
+	for (const String &E : built_ins) {
 		syntax_highlighter->add_keyword_color(E, member_variable_color);
 	}
 

+ 1 - 1
editor/plugins/sprite_frames_editor_plugin.cpp

@@ -788,7 +788,7 @@ void SpriteFramesEditor::_update_library(bool p_skip_selector) {
 
 		anim_names.sort_custom<StringName::AlphCompare>();
 
-		for (StringName &E : anim_names) {
+		for (const StringName &E : anim_names) {
 			String name = E;
 
 			TreeItem *it = animations->create_item(anim_root);

+ 2 - 2
editor/plugins/texture_region_editor_plugin.cpp

@@ -144,7 +144,7 @@ void TextureRegionEditor::_region_draw() {
 			}
 		}
 	} else if (snap_mode == SNAP_AUTOSLICE) {
-		for (Rect2 &r : autoslice_cache) {
+		for (const Rect2 &r : autoslice_cache) {
 			Vector2 endpoints[4] = {
 				mtx.basis_xform(r.position),
 				mtx.basis_xform(r.position + Vector2(r.size.x, 0)),
@@ -327,7 +327,7 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
 				}
 				if (edited_margin < 0 && snap_mode == SNAP_AUTOSLICE) {
 					Vector2 point = mtx.affine_inverse().xform(Vector2(mb->get_position().x, mb->get_position().y));
-					for (Rect2 &E : autoslice_cache) {
+					for (const Rect2 &E : autoslice_cache) {
 						if (E.has_point(point)) {
 							rect = E;
 							if (Input::get_singleton()->is_key_pressed(KEY_CTRL) && !(Input::get_singleton()->is_key_pressed(KEY_SHIFT | KEY_ALT))) {

+ 35 - 35
editor/plugins/theme_editor_plugin.cpp

@@ -65,7 +65,7 @@ void ThemeItemImportTree::_update_items_tree() {
 	tree_icon_items.clear();
 	tree_stylebox_items.clear();
 
-	for (StringName &E : types) {
+	for (const StringName &E : types) {
 		String type_name = (String)E;
 
 		TreeItem *type_node = import_items_tree->create_item(root);
@@ -93,7 +93,7 @@ void ThemeItemImportTree::_update_items_tree() {
 
 			bool data_type_has_filtered_items = false;
 
-			for (StringName &F : names) {
+			for (const StringName &F : names) {
 				String item_name = (String)F;
 				bool is_item_matching_filter = (item_name.findn(filter_text) > -1);
 				if (!filter_text.is_empty() && !is_matching_filter && !is_item_matching_filter) {
@@ -182,7 +182,7 @@ void ThemeItemImportTree::_update_items_tree() {
 			bool data_type_any_checked_with_data = false;
 
 			filtered_names.sort_custom<StringName::AlphCompare>();
-			for (StringName &F : filtered_names) {
+			for (const StringName &F : filtered_names) {
 				TreeItem *item_node = import_items_tree->create_item(data_type_node);
 				item_node->set_meta("_can_be_imported", true);
 				item_node->set_text(0, F);
@@ -1236,7 +1236,7 @@ void ThemeItemEditorDialog::_update_edit_types() {
 	bool item_reselected = false;
 	edit_type_list->clear();
 	int e_idx = 0;
-	for (StringName &E : theme_types) {
+	for (const StringName &E : theme_types) {
 		Ref<Texture2D> item_icon;
 		if (E == "") {
 			item_icon = get_theme_icon(SNAME("NodeDisabled"), SNAME("EditorIcons"));
@@ -1318,7 +1318,7 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
 			color_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Color Items"));
 
 			names.sort_custom<StringName::AlphCompare>();
-			for (StringName &E : names) {
+			for (const StringName &E : names) {
 				TreeItem *item = edit_items_tree->create_item(color_root);
 				item->set_text(0, E);
 				item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
@@ -1339,7 +1339,7 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
 			constant_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Constant Items"));
 
 			names.sort_custom<StringName::AlphCompare>();
-			for (StringName &E : names) {
+			for (const StringName &E : names) {
 				TreeItem *item = edit_items_tree->create_item(constant_root);
 				item->set_text(0, E);
 				item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
@@ -1360,7 +1360,7 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
 			font_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Font Items"));
 
 			names.sort_custom<StringName::AlphCompare>();
-			for (StringName &E : names) {
+			for (const StringName &E : names) {
 				TreeItem *item = edit_items_tree->create_item(font_root);
 				item->set_text(0, E);
 				item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
@@ -1381,7 +1381,7 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
 			font_size_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Font Size Items"));
 
 			names.sort_custom<StringName::AlphCompare>();
-			for (StringName &E : names) {
+			for (const StringName &E : names) {
 				TreeItem *item = edit_items_tree->create_item(font_size_root);
 				item->set_text(0, E);
 				item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
@@ -1402,7 +1402,7 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
 			icon_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Icon Items"));
 
 			names.sort_custom<StringName::AlphCompare>();
-			for (StringName &E : names) {
+			for (const StringName &E : names) {
 				TreeItem *item = edit_items_tree->create_item(icon_root);
 				item->set_text(0, E);
 				item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
@@ -1423,7 +1423,7 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
 			stylebox_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All StyleBox Items"));
 
 			names.sort_custom<StringName::AlphCompare>();
-			for (StringName &E : names) {
+			for (const StringName &E : names) {
 				TreeItem *item = edit_items_tree->create_item(stylebox_root);
 				item->set_text(0, E);
 				item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
@@ -1507,7 +1507,7 @@ void ThemeItemEditorDialog::_remove_data_type_items(Theme::DataType p_data_type,
 	edited_theme->_freeze_change_propagation();
 
 	edited_theme->get_theme_item_list(p_data_type, p_item_type, &names);
-	for (StringName &E : names) {
+	for (const StringName &E : names) {
 		edited_theme->clear_theme_item(p_data_type, E, p_item_type);
 	}
 
@@ -1526,7 +1526,7 @@ void ThemeItemEditorDialog::_remove_class_items() {
 
 		names.clear();
 		Theme::get_default()->get_theme_item_list(data_type, edited_item_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (edited_theme->has_theme_item_nocheck(data_type, E, edited_item_type)) {
 				edited_theme->clear_theme_item(data_type, E, edited_item_type);
 			}
@@ -1550,7 +1550,7 @@ void ThemeItemEditorDialog::_remove_custom_items() {
 
 		names.clear();
 		edited_theme->get_theme_item_list(data_type, edited_item_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (!Theme::get_default()->has_theme_item_nocheck(data_type, E, edited_item_type)) {
 				edited_theme->clear_theme_item(data_type, E, edited_item_type);
 			}
@@ -1574,7 +1574,7 @@ void ThemeItemEditorDialog::_remove_all_items() {
 
 		names.clear();
 		edited_theme->get_theme_item_list(data_type, edited_item_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			edited_theme->clear_theme_item(data_type, E, edited_item_type);
 		}
 	}
@@ -1927,7 +1927,7 @@ ThemeItemEditorDialog::ThemeItemEditorDialog() {
 	import_another_theme_dialog->set_title(TTR("Select Another Theme Resource:"));
 	List<String> ext;
 	ResourceLoader::get_recognized_extensions_for_type("Theme", &ext);
-	for (String &E : ext) {
+	for (const String &E : ext) {
 		import_another_theme_dialog->add_filter("*." + E + "; Theme Resource");
 	}
 	import_another_file_hb->add_child(import_another_theme_dialog);
@@ -1969,7 +1969,7 @@ void ThemeTypeDialog::_update_add_type_options(const String &p_filter) {
 	names.sort_custom<StringName::AlphCompare>();
 
 	Vector<StringName> unique_names;
-	for (StringName &E : names) {
+	for (const StringName &E : names) {
 		// Filter out undesired values.
 		if (!p_filter.is_subsequence_ofi(String(E))) {
 			continue;
@@ -2132,7 +2132,7 @@ void ThemeTypeEditor::_update_type_list() {
 
 		bool item_reselected = false;
 		int e_idx = 0;
-		for (StringName &E : theme_types) {
+		for (const StringName &E : theme_types) {
 			Ref<Texture2D> item_icon;
 			if (E == "") {
 				item_icon = get_theme_icon(SNAME("NodeDisabled"), SNAME("EditorIcons"));
@@ -2182,7 +2182,7 @@ OrderedHashMap<StringName, bool> ThemeTypeEditor::_get_type_items(String p_type_
 
 		(Theme::get_default().operator->()->*get_list_func)(default_type, &names);
 		names.sort_custom<StringName::AlphCompare>();
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			items[E] = false;
 		}
 	}
@@ -2191,7 +2191,7 @@ OrderedHashMap<StringName, bool> ThemeTypeEditor::_get_type_items(String p_type_
 		names.clear();
 		(edited_theme.operator->()->*get_list_func)(p_type_name, &names);
 		names.sort_custom<StringName::AlphCompare>();
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			items[E] = true;
 		}
 	}
@@ -2203,7 +2203,7 @@ OrderedHashMap<StringName, bool> ThemeTypeEditor::_get_type_items(String p_type_
 	keys.sort_custom<StringName::AlphCompare>();
 
 	OrderedHashMap<StringName, bool> ordered_items;
-	for (StringName &E : keys) {
+	for (const StringName &E : keys) {
 		ordered_items[E] = items[E];
 	}
 
@@ -2580,7 +2580,7 @@ void ThemeTypeEditor::_add_default_type_items() {
 	{
 		names.clear();
 		Theme::get_default()->get_icon_list(default_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (!edited_theme->has_icon(E, edited_type)) {
 				edited_theme->set_icon(E, edited_type, Ref<Texture2D>());
 			}
@@ -2589,7 +2589,7 @@ void ThemeTypeEditor::_add_default_type_items() {
 	{
 		names.clear();
 		Theme::get_default()->get_stylebox_list(default_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (!edited_theme->has_stylebox(E, edited_type)) {
 				edited_theme->set_stylebox(E, edited_type, Ref<StyleBox>());
 			}
@@ -2598,7 +2598,7 @@ void ThemeTypeEditor::_add_default_type_items() {
 	{
 		names.clear();
 		Theme::get_default()->get_font_list(default_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (!edited_theme->has_font(E, edited_type)) {
 				edited_theme->set_font(E, edited_type, Ref<Font>());
 			}
@@ -2607,7 +2607,7 @@ void ThemeTypeEditor::_add_default_type_items() {
 	{
 		names.clear();
 		Theme::get_default()->get_font_size_list(default_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (!edited_theme->has_font_size(E, edited_type)) {
 				edited_theme->set_font_size(E, edited_type, Theme::get_default()->get_font_size(E, default_type));
 			}
@@ -2616,7 +2616,7 @@ void ThemeTypeEditor::_add_default_type_items() {
 	{
 		names.clear();
 		Theme::get_default()->get_color_list(default_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (!edited_theme->has_color(E, edited_type)) {
 				edited_theme->set_color(E, edited_type, Theme::get_default()->get_color(E, default_type));
 			}
@@ -2625,7 +2625,7 @@ void ThemeTypeEditor::_add_default_type_items() {
 	{
 		names.clear();
 		Theme::get_default()->get_constant_list(default_type, &names);
-		for (StringName &E : names) {
+		for (const StringName &E : names) {
 			if (!edited_theme->has_constant(E, edited_type)) {
 				edited_theme->set_constant(E, edited_type, Theme::get_default()->get_constant(E, default_type));
 			}
@@ -2882,7 +2882,7 @@ void ThemeTypeEditor::_update_stylebox_from_leading() {
 	List<StringName> names;
 	edited_theme->get_stylebox_list(edited_type, &names);
 	List<Ref<StyleBox>> styleboxes;
-	for (StringName &E : names) {
+	for (const StringName &E : names) {
 		if (E == leading_stylebox.item_name) {
 			continue;
 		}
@@ -2895,7 +2895,7 @@ void ThemeTypeEditor::_update_stylebox_from_leading() {
 
 	List<PropertyInfo> props;
 	leading_stylebox.stylebox->get_property_list(&props);
-	for (PropertyInfo &E : props) {
+	for (const PropertyInfo &E : props) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}
@@ -3301,7 +3301,7 @@ ThemeEditor::ThemeEditor() {
 	preview_scene_dialog->set_title(TTR("Select UI Scene:"));
 	List<String> ext;
 	ResourceLoader::get_recognized_extensions_for_type("PackedScene", &ext);
-	for (String &E : ext) {
+	for (const String &E : ext) {
 		preview_scene_dialog->add_filter("*." + E + "; Scene");
 	}
 	main_hs->add_child(preview_scene_dialog);
@@ -3343,11 +3343,11 @@ bool ThemeEditorPlugin::handles(Object *p_node) const {
 		List<StringName> names;
 
 		edited_theme->get_font_type_list(&types);
-		for (StringName &E : types) {
+		for (const StringName &E : types) {
 			names.clear();
 			edited_theme->get_font_list(E, &names);
 
-			for (StringName &F : names) {
+			for (const StringName &F : names) {
 				if (font_item == edited_theme->get_font(F, E)) {
 					belongs_to_theme = true;
 					break;
@@ -3360,11 +3360,11 @@ bool ThemeEditorPlugin::handles(Object *p_node) const {
 		List<StringName> names;
 
 		edited_theme->get_stylebox_type_list(&types);
-		for (StringName &E : types) {
+		for (const StringName &E : types) {
 			names.clear();
 			edited_theme->get_stylebox_list(E, &names);
 
-			for (StringName &F : names) {
+			for (const StringName &F : names) {
 				if (stylebox_item == edited_theme->get_stylebox(F, E)) {
 					belongs_to_theme = true;
 					break;
@@ -3377,11 +3377,11 @@ bool ThemeEditorPlugin::handles(Object *p_node) const {
 		List<StringName> names;
 
 		edited_theme->get_icon_type_list(&types);
-		for (StringName &E : types) {
+		for (const StringName &E : types) {
 			names.clear();
 			edited_theme->get_icon_list(E, &names);
 
-			for (StringName &F : names) {
+			for (const StringName &F : names) {
 				if (icon_item == edited_theme->get_icon(F, E)) {
 					belongs_to_theme = true;
 					break;

+ 1 - 1
editor/plugins/tiles/tile_set_atlas_source_editor.cpp

@@ -303,7 +303,7 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
 	}
 
 	// Add only properties that are common to all tiles.
-	for (PLData *E : data_list) {
+	for (const PLData *E : data_list) {
 		if (E->uses == tiles.size()) {
 			p_list->push_back(E->property_info);
 		}

+ 18 - 18
editor/plugins/visual_shader_editor_plugin.cpp

@@ -666,7 +666,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
 		if (valid_left) {
 			name_left = vsnode->get_input_port_name(i);
 			port_left = vsnode->get_input_port_type(i);
-			for (VisualShader::Connection &E : connections) {
+			for (const VisualShader::Connection &E : connections) {
 				if (E.to_node == p_id && E.to_port == j) {
 					port_left_used = true;
 				}
@@ -899,7 +899,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
 		expression_box->set_syntax_highlighter(expression_syntax_highlighter);
 		expression_box->add_theme_color_override("background_color", background_color);
 
-		for (String &E : VisualShaderEditor::get_singleton()->keyword_list) {
+		for (const String &E : VisualShaderEditor::get_singleton()->keyword_list) {
 			if (ShaderLanguage::is_control_flow_keyword(E)) {
 				expression_syntax_highlighter->add_keyword_color(E, control_flow_keyword_color);
 			} else {
@@ -1470,7 +1470,7 @@ void VisualShaderEditor::_update_graph() {
 
 	graph_plugin->make_dirty(false);
 
-	for (VisualShader::Connection &E : connections) {
+	for (const VisualShader::Connection &E : connections) {
 		int from = E.from_node;
 		int from_idx = E.from_port;
 		int to = E.to_node;
@@ -1634,7 +1634,7 @@ void VisualShaderEditor::_expand_output_port(int p_node, int p_port, bool p_expa
 	List<VisualShader::Connection> conns;
 	visual_shader->get_node_connections(type, &conns);
 
-	for (VisualShader::Connection &E : conns) {
+	for (const VisualShader::Connection &E : conns) {
 		int from_node = E.from_node;
 		int from_port = E.from_port;
 		int to_node = E.to_node;
@@ -1708,7 +1708,7 @@ void VisualShaderEditor::_remove_input_port(int p_node, int p_port) {
 
 	List<VisualShader::Connection> conns;
 	visual_shader->get_node_connections(type, &conns);
-	for (VisualShader::Connection &E : conns) {
+	for (const VisualShader::Connection &E : conns) {
 		int from_node = E.from_node;
 		int from_port = E.from_port;
 		int to_node = E.to_node;
@@ -1757,7 +1757,7 @@ void VisualShaderEditor::_remove_output_port(int p_node, int p_port) {
 
 	List<VisualShader::Connection> conns;
 	visual_shader->get_node_connections(type, &conns);
-	for (VisualShader::Connection &E : conns) {
+	for (const VisualShader::Connection &E : conns) {
 		int from_node = E.from_node;
 		int from_port = E.from_port;
 		int to_node = E.to_node;
@@ -2518,7 +2518,7 @@ void VisualShaderEditor::_nodes_dragged() {
 
 	undo_redo->create_action(TTR("Node(s) Moved"));
 
-	for (DragOp &E : drag_buffer) {
+	for (const DragOp &E : drag_buffer) {
 		undo_redo->add_do_method(visual_shader.ptr(), "set_node_position", E.type, E.node, E.to);
 		undo_redo->add_undo_method(visual_shader.ptr(), "set_node_position", E.type, E.node, E.from);
 		undo_redo->add_do_method(graph_plugin.ptr(), "set_node_position", E.type, E.node, E.to);
@@ -2544,7 +2544,7 @@ void VisualShaderEditor::_connection_request(const String &p_from, int p_from_in
 	List<VisualShader::Connection> conns;
 	visual_shader->get_node_connections(type, &conns);
 
-	for (VisualShader::Connection &E : conns) {
+	for (const VisualShader::Connection &E : conns) {
 		if (E.to_node == to && E.to_port == p_to_index) {
 			undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
 			undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
@@ -2598,7 +2598,7 @@ void VisualShaderEditor::_delete_nodes(int p_type, const List<int> &p_nodes) {
 	visual_shader->get_node_connections(type, &conns);
 
 	for (const int &F : p_nodes) {
-		for (VisualShader::Connection &E : conns) {
+		for (const VisualShader::Connection &E : conns) {
 			if (E.from_node == F || E.to_node == F) {
 				undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
 			}
@@ -2639,7 +2639,7 @@ void VisualShaderEditor::_delete_nodes(int p_type, const List<int> &p_nodes) {
 
 	List<VisualShader::Connection> used_conns;
 	for (const int &F : p_nodes) {
-		for (VisualShader::Connection &E : conns) {
+		for (const VisualShader::Connection &E : conns) {
 			if (E.from_node == F || E.to_node == F) {
 				bool cancel = false;
 				for (List<VisualShader::Connection>::Element *R = used_conns.front(); R; R = R->next()) {
@@ -3094,7 +3094,7 @@ void VisualShaderEditor::_notification(int p_what) {
 
 			preview_text->add_theme_color_override("background_color", background_color);
 
-			for (String &E : keyword_list) {
+			for (const String &E : keyword_list) {
 				if (ShaderLanguage::is_control_flow_keyword(E)) {
 					syntax_highlighter->add_keyword_color(E, control_flow_keyword_color);
 				} else {
@@ -3249,7 +3249,7 @@ void VisualShaderEditor::_dup_paste_nodes(int p_type, int p_pasted_type, List<in
 	List<VisualShader::Connection> conns;
 	visual_shader->get_node_connections(pasted_type, &conns);
 
-	for (VisualShader::Connection &E : conns) {
+	for (const VisualShader::Connection &E : conns) {
 		if (unsupported_set.has(E.from_node) || unsupported_set.has(E.to_node)) {
 			continue;
 		}
@@ -3399,7 +3399,7 @@ void VisualShaderEditor::_input_select_item(Ref<VisualShaderNodeInput> p_input,
 			if (type_changed) {
 				List<VisualShader::Connection> conns;
 				visual_shader->get_node_connections(type, &conns);
-				for (VisualShader::Connection &E : conns) {
+				for (const VisualShader::Connection &E : conns) {
 					if (E.from_node == id) {
 						if (visual_shader->is_port_types_compatible(p_input->get_input_type_by_name(p_name), visual_shader->get_node(type, E.to_node)->get_input_port_type(E.to_port))) {
 							undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
@@ -3445,7 +3445,7 @@ void VisualShaderEditor::_uniform_select_item(Ref<VisualShaderNodeUniformRef> p_
 			if (type_changed) {
 				List<VisualShader::Connection> conns;
 				visual_shader->get_node_connections(type, &conns);
-				for (VisualShader::Connection &E : conns) {
+				for (const VisualShader::Connection &E : conns) {
 					if (E.from_node == id) {
 						if (visual_shader->is_port_types_compatible(p_uniform_ref->get_uniform_type_by_name(p_name), visual_shader->get_node(type, E.to_node)->get_input_port_type(E.to_port))) {
 							continue;
@@ -4825,7 +4825,7 @@ Control *VisualShaderNodePluginDefault::create_editor(const Ref<Resource> &p_par
 
 	Vector<PropertyInfo> pinfo;
 
-	for (PropertyInfo &E : props) {
+	for (const PropertyInfo &E : props) {
 		for (int i = 0; i < properties.size(); i++) {
 			if (E.name == String(properties[i])) {
 				pinfo.push_back(E);
@@ -4894,7 +4894,7 @@ void EditorPropertyShaderMode::_option_selected(int p_which) {
 		VisualShader::Type type = VisualShader::Type(i);
 		List<VisualShader::Connection> conns;
 		visual_shader->get_node_connections(type, &conns);
-		for (VisualShader::Connection &E : conns) {
+		for (const VisualShader::Connection &E : conns) {
 			if (E.to_node == VisualShader::NODE_ID_OUTPUT) {
 				undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
 			}
@@ -4918,7 +4918,7 @@ void EditorPropertyShaderMode::_option_selected(int p_which) {
 	List<PropertyInfo> props;
 	visual_shader->get_property_list(&props);
 
-	for (PropertyInfo &E : props) {
+	for (const PropertyInfo &E : props) {
 		if (E.name.begins_with("flags/") || E.name.begins_with("modes/")) {
 			undo_redo->add_undo_property(visual_shader.ptr(), E.name, visual_shader->get(E.name));
 		}
@@ -5024,7 +5024,7 @@ void VisualShaderNodePortPreview::_shader_changed() {
 		if (src_mat && src_mat->get_shader().is_valid()) {
 			List<PropertyInfo> params;
 			src_mat->get_shader()->get_param_list(&params);
-			for (PropertyInfo &E : params) {
+			for (const PropertyInfo &E : params) {
 				material->set(E.name, src_mat->get(E.name));
 			}
 		}

+ 1 - 1
editor/project_export.cpp

@@ -340,7 +340,7 @@ void ProjectExportDialog::_update_feature_list() {
 		}
 	}
 
-	for (String &E : features) {
+	for (const String &E : features) {
 		fset.insert(E);
 	}
 

+ 5 - 5
editor/project_manager.cpp

@@ -1238,14 +1238,14 @@ void ProjectList::load_projects() {
 
 	Set<String> favorites;
 	// Find favourites...
-	for (PropertyInfo &E : properties) {
+	for (const PropertyInfo &E : properties) {
 		String property_key = E.name;
 		if (property_key.begins_with("favorite_projects/")) {
 			favorites.insert(property_key);
 		}
 	}
 
-	for (PropertyInfo &E : properties) {
+	for (const PropertyInfo &E : properties) {
 		// This is actually something like "projects/C:::Documents::Godot::Projects::MyGame"
 		String property_key = E.name;
 		if (!property_key.begins_with("projects/")) {
@@ -1582,7 +1582,7 @@ int ProjectList::refresh_project(const String &dir_path) {
 		String favorite_property_key = "favorite_projects/" + project_key;
 
 		bool found = false;
-		for (PropertyInfo &E : properties) {
+		for (const PropertyInfo &E : properties) {
 			String prop = E.name;
 			if (!found && prop == property_key) {
 				found = true;
@@ -2188,7 +2188,7 @@ void ProjectManager::_scan_begin(const String &p_base) {
 	_scan_dir(p_base, &projects);
 	print_line("Found " + itos(projects.size()) + " projects.");
 
-	for (String &E : projects) {
+	for (const String &E : projects) {
 		String proj = get_project_key_from_path(E);
 		EditorSettings::get_singleton()->set("projects/" + proj, E);
 	}
@@ -2625,7 +2625,7 @@ ProjectManager::ProjectManager() {
 		Vector<String> editor_languages;
 		List<PropertyInfo> editor_settings_properties;
 		EditorSettings::get_singleton()->get_property_list(&editor_settings_properties);
-		for (PropertyInfo &pi : editor_settings_properties) {
+		for (const PropertyInfo &pi : editor_settings_properties) {
 			if (pi.name == "interface/editor/editor_language") {
 				editor_languages = pi.hint_string.split(",");
 				break;

+ 4 - 4
editor/project_settings_editor.cpp

@@ -229,7 +229,7 @@ void ProjectSettingsEditor::_add_feature_overrides() {
 	for (int i = 0; i < ee->get_export_platform_count(); i++) {
 		List<String> p;
 		ee->get_export_platform(i)->get_platform_features(&p);
-		for (String &E : p) {
+		for (const String &E : p) {
 			presets.insert(E);
 		}
 	}
@@ -237,7 +237,7 @@ void ProjectSettingsEditor::_add_feature_overrides() {
 	for (int i = 0; i < ee->get_export_preset_count(); i++) {
 		List<String> p;
 		ee->get_export_preset(i)->get_platform()->get_preset_features(ee->get_export_preset(i), &p);
-		for (String &E : p) {
+		for (const String &E : p) {
 			presets.insert(E);
 		}
 
@@ -391,7 +391,7 @@ void ProjectSettingsEditor::_action_reordered(const String &p_action_name, const
 
 	undo_redo->create_action(TTR("Update Input Action Order"));
 
-	for (PropertyInfo &prop : props) {
+	for (const PropertyInfo &prop : props) {
 		// Skip builtins and non-inputs
 		if (ProjectSettings::get_singleton()->is_builtin_setting(prop.name) || !prop.name.begins_with("input/")) {
 			continue;
@@ -444,7 +444,7 @@ void ProjectSettingsEditor::_update_action_map_editor() {
 	ProjectSettings::get_singleton()->get_property_list(&props);
 
 	const Ref<Texture2D> builtin_icon = get_theme_icon(SNAME("PinPressed"), SNAME("EditorIcons"));
-	for (PropertyInfo &E : props) {
+	for (const PropertyInfo &E : props) {
 		const String property_name = E.name;
 
 		if (!property_name.begins_with("input/")) {

+ 6 - 6
editor/property_editor.cpp

@@ -143,7 +143,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
 					}
 
 					Set<String> valid_extensions;
-					for (String &E : extensions) {
+					for (const String &E : extensions) {
 						valid_extensions.insert(E);
 					}
 
@@ -179,7 +179,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
 					res_orig->get_property_list(&property_list);
 					List<Pair<String, Variant>> propvalues;
 
-					for (PropertyInfo &pi : property_list) {
+					for (const PropertyInfo &pi : property_list) {
 						Pair<String, Variant> p;
 						if (pi.usage & PROPERTY_USAGE_STORAGE) {
 							p.first = pi.name;
@@ -197,7 +197,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
 
 					ERR_FAIL_COND(res.is_null());
 
-					for (Pair<String, Variant> &p : propvalues) {
+					for (const Pair<String, Variant> &p : propvalues) {
 						res->set(p.first, p.second);
 					}
 
@@ -1291,7 +1291,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
 
 				ResourceLoader::get_recognized_extensions_for_type(type, &extensions);
 				file->clear_filters();
-				for (String &E : extensions) {
+				for (const String &E : extensions) {
 					file->add_filter("*." + E + " ; " + E.to_upper());
 				}
 
@@ -1319,7 +1319,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
 				res_orig->get_property_list(&property_list);
 				List<Pair<String, Variant>> propvalues;
 
-				for (PropertyInfo &pi : property_list) {
+				for (const PropertyInfo &pi : property_list) {
 					Pair<String, Variant> p;
 					if (pi.usage & PROPERTY_USAGE_STORAGE) {
 						p.first = pi.name;
@@ -1333,7 +1333,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
 
 				ERR_FAIL_COND(res.is_null());
 
-				for (Pair<String, Variant> &p : propvalues) {
+				for (const Pair<String, Variant> &p : propvalues) {
 					res->set(p.first, p.second);
 				}
 

+ 1 - 1
editor/property_selector.cpp

@@ -156,7 +156,7 @@ void PropertySelector::_update_search() {
 			search_options->get_theme_icon(SNAME("PackedColorArray"), SNAME("EditorIcons"))
 		};
 
-		for (PropertyInfo &E : props) {
+		for (const PropertyInfo &E : props) {
 			if (E.usage == PROPERTY_USAGE_CATEGORY) {
 				if (category && category->get_first_child() == nullptr) {
 					memdelete(category); //old category was unused

+ 11 - 12
editor/scene_tree_dock.cpp

@@ -1531,7 +1531,7 @@ void SceneTreeDock::perform_node_renames(Node *p_base, Map<Node *, NodePath> *p_
 	List<PropertyInfo> properties;
 	p_base->get_property_list(&properties);
 
-	for (PropertyInfo &E : properties) {
+	for (const PropertyInfo &E : properties) {
 		if (!(E.usage & (PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR))) {
 			continue;
 		}
@@ -1557,7 +1557,7 @@ void SceneTreeDock::perform_node_renames(Node *p_base, Map<Node *, NodePath> *p_
 			Map<Node *, NodePath>::Element *found_root_path = p_renames->find(root);
 			NodePath new_root_path = found_root_path ? found_root_path->get() : root->get_path();
 			if (!new_root_path.is_empty()) { // No renaming if root node is deleted.
-				for (StringName &E : anims) {
+				for (const StringName &E : anims) {
 					Ref<Animation> anim = ap->get_animation(E);
 					if (!r_rem_anims->has(anim)) {
 						r_rem_anims->insert(anim, Set<int>());
@@ -2271,7 +2271,7 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop
 		List<PropertyInfo> pinfo;
 		n->get_property_list(&pinfo);
 
-		for (PropertyInfo &E : pinfo) {
+		for (const PropertyInfo &E : pinfo) {
 			if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 				continue;
 			}
@@ -2308,12 +2308,11 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop
 	List<MethodInfo> sl;
 
 	n->get_signal_list(&sl);
-	for (MethodInfo &E : sl) {
+	for (const MethodInfo &E : sl) {
 		List<Object::Connection> cl;
 		n->get_signal_connection_list(E.name, &cl);
 
-		for (Object::Connection &F : cl) {
-			Object::Connection &c = F;
+		for (const Object::Connection &c : cl) {
 			if (!(c.flags & Object::CONNECT_PERSIST)) {
 				continue;
 			}
@@ -2519,13 +2518,13 @@ void SceneTreeDock::_files_dropped(Vector<String> p_files, NodePath p_to, int p_
 		List<PropertyInfo> pinfo;
 		node->get_property_list(&pinfo);
 
-		for (PropertyInfo &p : pinfo) {
+		for (const PropertyInfo &p : pinfo) {
 			if (!(p.usage & PROPERTY_USAGE_EDITOR) || !(p.usage & PROPERTY_USAGE_STORAGE) || p.hint != PROPERTY_HINT_RESOURCE_TYPE) {
 				continue;
 			}
 			Vector<String> valid_types = p.hint_string.split(",");
 
-			for (String &prop_type : valid_types) {
+			for (const String &prop_type : valid_types) {
 				if (res_type == prop_type || ClassDB::is_parent_class(res_type, prop_type) || EditorNode::get_editor_data().script_class_is_parent(res_type, prop_type)) {
 					valid_properties.push_back(p.name);
 					break;
@@ -2539,7 +2538,7 @@ void SceneTreeDock::_files_dropped(Vector<String> p_files, NodePath p_to, int p_
 
 			bool capitalize = bool(EDITOR_GET("interface/inspector/capitalize_properties"));
 			menu_properties->clear();
-			for (String &p : valid_properties) {
+			for (const String &p : valid_properties) {
 				menu_properties->add_item(capitalize ? p.capitalize() : p);
 				menu_properties->set_item_metadata(menu_properties->get_item_count() - 1, p);
 			}
@@ -2597,7 +2596,7 @@ void SceneTreeDock::_add_children_to_popup(Object *p_obj, int p_depth) {
 
 	List<PropertyInfo> pinfo;
 	p_obj->get_property_list(&pinfo);
-	for (PropertyInfo &E : pinfo) {
+	for (const PropertyInfo &E : pinfo) {
 		if (!(E.usage & PROPERTY_USAGE_EDITOR)) {
 			continue;
 		}
@@ -3052,7 +3051,7 @@ void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap)
 	p_node->get_property_list(&props);
 	bool is_instantiated = EditorPropertyRevert::may_node_be_in_instance(p_node);
 
-	for (PropertyInfo &E : props) {
+	for (const PropertyInfo &E : props) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}
@@ -3088,7 +3087,7 @@ void SceneTreeDock::_create_remap_for_resource(RES p_resource, Map<RES, RES> &r_
 	List<PropertyInfo> props;
 	p_resource->get_property_list(&props);
 
-	for (PropertyInfo &E : props) {
+	for (const PropertyInfo &E : props) {
 		if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
 			continue;
 		}

+ 3 - 3
editor/script_create_dialog.cpp

@@ -205,7 +205,7 @@ String ScriptCreateDialog::_validate_path(const String &p_path, bool p_file_must
 	bool found = false;
 	bool match = false;
 	int index = 0;
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		if (E.nocasecmp_to(extension) == 0) {
 			//FIXME (?) - changing language this way doesn't update controls, needs rework
 			//language_menu->select(index); // change Language option by extension
@@ -373,7 +373,7 @@ void ScriptCreateDialog::_lang_changed(int l) {
 				ScriptServer::get_language(m)->get_recognized_extensions(&extensions);
 			}
 
-			for (String &E : extensions) {
+			for (const String &E : extensions) {
 				if (E.nocasecmp_to(extension) == 0) {
 					path = path.get_basename() + selected_ext;
 					_path_changed(path);
@@ -534,7 +534,7 @@ void ScriptCreateDialog::_browse_path(bool browse_parent, bool p_save) {
 	int lang = language_menu->get_selected();
 	ScriptServer::get_language(lang)->get_recognized_extensions(&extensions);
 
-	for (String &E : extensions) {
+	for (const String &E : extensions) {
 		file_browse->add_filter("*." + E);
 	}
 

+ 1 - 1
editor/settings_config_dialog.cpp

@@ -324,7 +324,7 @@ void EditorSettingsDialog::_update_shortcuts() {
 	List<String> slist;
 	EditorSettings::get_singleton()->get_shortcut_list(&slist);
 
-	for (String &E : slist) {
+	for (const String &E : slist) {
 		Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(E);
 		if (!sc->has_meta("original")) {
 			continue;

Some files were not shown because too many files changed in this diff