From 3e53d674126929941240126c8dfc9111a2445c87 Mon Sep 17 00:00:00 2001 From: Micah Date: Fri, 2 Aug 2024 10:02:32 -0700 Subject: [PATCH] In the plugin, don't write properties if they're nil and also a number (#955) --- CHANGELOG.md | 4 ++++ aftman.toml | 2 +- plugin/src/Reconciler/setProperty.lua | 9 ++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70b35d7f..f4c87ef2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased Changes +* Fixed `value of type nil cannot be converted to number` warning spam in output. [#955] + +[#955]: https://github.com/rojo-rbx/rojo/pull/893 + ## [7.4.2] - July 23, 2024 * Added Never option to Confirmation ([#893]) * Fixed removing trailing newlines ([#903]) diff --git a/aftman.toml b/aftman.toml index 5273b6d0..52852406 100644 --- a/aftman.toml +++ b/aftman.toml @@ -1,5 +1,5 @@ [tools] -rojo = "rojo-rbx/rojo@7.3.0" +rojo = "rojo-rbx/rojo@7.4.1" selene = "Kampfkarren/selene@0.26.1" stylua = "JohnnyMorganz/stylua@0.18.2" run-in-roblox = "rojo-rbx/run-in-roblox@0.3.0" diff --git a/plugin/src/Reconciler/setProperty.lua b/plugin/src/Reconciler/setProperty.lua index 11df6b54..b5a0e31b 100644 --- a/plugin/src/Reconciler/setProperty.lua +++ b/plugin/src/Reconciler/setProperty.lua @@ -7,7 +7,7 @@ local Log = require(Packages.Log) local RbxDom = require(Packages.RbxDom) local Error = require(script.Parent.Error) -local function setProperty(instance, propertyName, value) +local function setProperty(instance: Instance, propertyName: string, value: unknown): boolean local descriptor = RbxDom.findCanonicalPropertyDescriptor(instance.ClassName, propertyName) -- We can skip unknown properties; they're not likely reflected to Lua. @@ -28,6 +28,13 @@ local function setProperty(instance, propertyName, value) }) end + if value == nil then + if descriptor.dataType == "Float32" or descriptor.dataType == "Float64" then + Log.trace("Skipping nil {} property {}.{}", descriptor.dataType, instance.ClassName, propertyName) + return true + end + end + local writeSuccess, err = descriptor:write(instance, value) if not writeSuccess then