mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-04-22 21:55:15 +00:00
Upgrade to rbx_dom_weak 2.0 (#377)
* Mostly mechanical port bits * Almost there * It builds again! * Turn on all the code again * Tests compiling but not passing * Stub work for value resolution * Implement resolution minus enums and derived properties * Implement property descriptor resolution * Update referent snapshots * Update unions test project Using a place file instead of a model yields better error messages in Roblox Studio. * Add easy shortcut to testing with local rbx-dom * Update rbx-dom * Add enum resolution * Update init.meta.json to use UnresolvedValue * Expand value resolution support, add test * Filter SharedString values from web API * Add 'property' builder method to InstanceSnapshot * Change InstanceSnapshot/InstanceBuilder boundary * Fix remove_file crash * rustfmt * Update to latest rbx_dom_lua * Update dependencies, including rbx_dom_weak * Update to latest rbx-dom * Update dependencies * Update rbx-dom, fixing more bugs * Remove experimental warning on binary place builds * Remove unused imports
This commit is contained in:
committed by
GitHub
parent
b84aab0960
commit
59ef5f05ea
@@ -2,7 +2,7 @@ use std::{borrow::Cow, collections::HashMap, path::Path};
|
||||
|
||||
use anyhow::Context;
|
||||
use memofs::Vfs;
|
||||
use rbx_reflection::{get_class_descriptor, try_resolve_value};
|
||||
use rbx_reflection::ClassTag;
|
||||
|
||||
use crate::{
|
||||
project::{Project, ProjectNode},
|
||||
@@ -140,9 +140,9 @@ pub fn snapshot_project_node(
|
||||
// Members of DataModel with names that match known services are
|
||||
// probably supposed to be those services.
|
||||
|
||||
let descriptor = get_class_descriptor(&name)?;
|
||||
let descriptor = rbx_reflection_database::get().classes.get(&name)?;
|
||||
|
||||
if descriptor.is_service() {
|
||||
if descriptor.tags.contains(&ClassTag::Service) {
|
||||
return Some(name.clone());
|
||||
}
|
||||
} else if parent_class == "StarterPlayer" {
|
||||
@@ -171,11 +171,18 @@ pub fn snapshot_project_node(
|
||||
}
|
||||
}
|
||||
|
||||
for (key, value) in &node.properties {
|
||||
let resolved_value = try_resolve_value(&class_name, key, value)
|
||||
.expect("TODO: Properly handle value resolution errors");
|
||||
for (key, unresolved) in &node.properties {
|
||||
let value = unresolved
|
||||
.clone()
|
||||
.resolve(&class_name, key)
|
||||
.with_context(|| {
|
||||
format!(
|
||||
"Unresolvable property in project at path {}",
|
||||
project_path.display()
|
||||
)
|
||||
})?;
|
||||
|
||||
properties.insert(key.clone(), resolved_value);
|
||||
properties.insert(key.clone(), value);
|
||||
}
|
||||
|
||||
// If the user specified $ignoreUnknownInstances, overwrite the existing
|
||||
|
||||
Reference in New Issue
Block a user