script: copy include! files from script_bindings to script's OUT_DIR (#36384)

copy generated `include!`d files from script_bindings's OUT_DIR, to
script's OUT_DIR to allow Rust Analyzer to load them.
This is done to bypass limitation of Rust Analyzer:
https://github.com/rust-lang/rust-analyzer/issues/17040

Also build script will now be rerun only when there are actual changes
to concrete bindings due to emitted `cargo::rerun-if-changed` (not for
each change in script crate).

Testing: It compiles so it works, I tested manually and RA now works as
expected (although we need to from type alias to concrete union-types
definitions)
Fixes:
https://servo.zulipchat.com/#narrow/channel/263398-general/topic/rust-analyzer.20failed.20to.20include.20codes.20in.20script_bindings

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
sagudev 2025-04-08 21:22:24 +02:00 committed by GitHub
parent 7fd004adce
commit 4d4f94936f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 53 additions and 15 deletions

View file

@ -166,28 +166,22 @@ pub(crate) use script_bindings::{callback, iterable, num};
#[allow(missing_docs, non_snake_case)]
pub(crate) mod codegen {
pub(crate) mod DomTypeHolder {
include!(concat!(env!("BINDINGS_OUT_DIR"), "/DomTypeHolder.rs"));
include!(concat!(env!("OUT_DIR"), "/DomTypeHolder.rs"));
}
pub(crate) use script_bindings::codegen::GenericBindings;
#[allow(dead_code)]
pub(crate) mod Bindings {
include!(concat!(
env!("BINDINGS_OUT_DIR"),
"/ConcreteBindings/mod.rs"
));
include!(concat!(env!("OUT_DIR"), "/ConcreteBindings/mod.rs"));
}
pub(crate) mod InterfaceObjectMap {
include!(concat!(env!("BINDINGS_OUT_DIR"), "/InterfaceObjectMap.rs"));
include!(concat!(env!("OUT_DIR"), "/InterfaceObjectMap.rs"));
}
pub(crate) mod ConcreteInheritTypes {
include!(concat!(
env!("BINDINGS_OUT_DIR"),
"/ConcreteInheritTypes.rs"
));
include!(concat!(env!("OUT_DIR"), "/ConcreteInheritTypes.rs"));
}
pub(crate) use script_bindings::codegen::{PrototypeList, RegisterBindings};
#[allow(dead_code)]
pub(crate) mod UnionTypes {
include!(concat!(env!("BINDINGS_OUT_DIR"), "/UnionTypes.rs"));
include!(concat!(env!("OUT_DIR"), "/UnionTypes.rs"));
}
}

View file

@ -207,7 +207,7 @@ pub(crate) mod macros;
#[allow(unused_imports)]
pub(crate) mod types {
include!(concat!(env!("BINDINGS_OUT_DIR"), "/InterfaceTypes.rs"));
include!(concat!(env!("OUT_DIR"), "/InterfaceTypes.rs"));
}
pub(crate) mod abortcontroller;