Skip to content

Commit

Permalink
Merge pull request #1213 from MarijnS95/attr-on-macro
Browse files Browse the repository at this point in the history
codegen/flags: Put doc attribute on struct instead of macro calls
  • Loading branch information
sdroege committed Aug 30, 2021
2 parents 9a3dffa + 9d189db commit 9e7b5ee
Show file tree
Hide file tree
Showing 11 changed files with 120 additions and 78 deletions.
2 changes: 1 addition & 1 deletion src/codegen/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec<String>) {
let type_ = env.type_(constant.typ);
if let library::Type::Fundamental(library::Fundamental::Utf8) = type_ {
cfg_deprecated(w, env, constant.deprecated_version, false, 0)?;
cfg_condition(w, &constant.cfg_condition, false, 0)?;
cfg_condition(w, constant.cfg_condition.as_ref(), false, 0)?;
version_condition(w, env, constant.version, false, 0)?;
doc_alias(w, &constant.glib_name, "", 0)?;
writeln!(
Expand Down
34 changes: 17 additions & 17 deletions src/codegen/enums.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec<String>) {
if let Some(cfg) = version_condition_string(env, enum_.version, false, 0) {
mod_rs.push(cfg);
}
if let Some(cfg) = cfg_condition_string(&config.cfg_condition, false, 0) {
if let Some(cfg) = cfg_condition_string(config.cfg_condition.as_ref(), false, 0) {
mod_rs.push(cfg);
}
mod_rs.push(format!("pub use self::enums::{};", enum_.name));
Expand Down Expand Up @@ -106,7 +106,7 @@ fn generate_enum(

cfg_deprecated(w, env, enum_.deprecated_version, false, 0)?;
version_condition(w, env, enum_.version, false, 0)?;
cfg_condition(w, &config.cfg_condition, false, 0)?;
cfg_condition(w, config.cfg_condition.as_ref(), false, 0)?;
if config.must_use {
writeln!(w, "#[must_use]")?;
}
Expand All @@ -124,7 +124,7 @@ fn generate_enum(
for member in &members {
cfg_deprecated(w, env, member.deprecated_version, false, 1)?;
version_condition(w, env, member.version, false, 1)?;
cfg_condition(w, &member.cfg_condition, false, 1)?;
cfg_condition(w, member.cfg_condition.as_ref(), false, 1)?;
// Don't generate a doc_alias if the C name is the same as the Rust one
if member.c_name != member.name {
doc_alias(w, &member.c_name, "", 1)?;
Expand All @@ -148,7 +148,7 @@ fn generate_enum(
if !functions.is_empty() {
writeln!(w)?;
version_condition(w, env, enum_.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
write!(w, "impl {} {{", analysis.name)?;
for func_analysis in functions {
function::generate(
Expand All @@ -173,15 +173,15 @@ fn generate_enum(
&analysis.specials,
None,
None,
&config.cfg_condition.as_ref(),
config.cfg_condition.as_ref(),
)?;

writeln!(w)?;

if config.generate_display_trait && !analysis.specials.has_trait(Type::Display) {
// Generate Display trait implementation.
version_condition(w, env, enum_.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl fmt::Display for {0} {{\n\
Expand All @@ -191,7 +191,7 @@ fn generate_enum(
)?;
for member in &members {
version_condition_no_doc(w, env, member.version, false, 3)?;
cfg_condition_no_doc(w, &member.cfg_condition, false, 3)?;
cfg_condition_no_doc(w, member.cfg_condition.as_ref(), false, 3)?;
writeln!(w, "\t\t\tSelf::{0} => \"{0}\",", member.name)?;
}
writeln!(
Expand All @@ -205,7 +205,7 @@ fn generate_enum(

// Generate IntoGlib trait implementation.
version_condition(w, env, enum_.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"#[doc(hidden)]
Expand All @@ -220,7 +220,7 @@ impl IntoGlib for {name} {{
)?;
for member in &members {
version_condition_no_doc(w, env, member.version, false, 3)?;
cfg_condition_no_doc(w, &member.cfg_condition, false, 3)?;
cfg_condition_no_doc(w, member.cfg_condition.as_ref(), false, 3)?;
writeln!(
w,
"\t\t\tSelf::{} => {}::{},",
Expand All @@ -245,7 +245,7 @@ impl IntoGlib for {name} {{

// Generate FromGlib trait implementation.
version_condition(w, env, enum_.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"#[doc(hidden)]
Expand All @@ -259,7 +259,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
)?;
for member in &members {
version_condition_no_doc(w, env, member.version, false, 3)?;
cfg_condition_no_doc(w, &member.cfg_condition, false, 3)?;
cfg_condition_no_doc(w, member.cfg_condition.as_ref(), false, 3)?;
writeln!(
w,
"\t\t\t{}::{} => Self::{},",
Expand All @@ -281,7 +281,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
let has_failed_member = members.iter().any(|m| m.name == "Failed");

version_condition(w, env, enum_.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl ErrorDomain for {name} {{
Expand Down Expand Up @@ -328,7 +328,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{

for member in &members {
version_condition_no_doc(w, env, member.version, false, 3)?;
cfg_condition_no_doc(w, &member.cfg_condition, false, 3)?;
cfg_condition_no_doc(w, member.cfg_condition.as_ref(), false, 3)?;
writeln!(
w,
"\t\t\t{}::{} => Some(Self::{}),",
Expand Down Expand Up @@ -360,7 +360,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
.flatten();

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl StaticType for {name} {{
Expand All @@ -375,7 +375,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
writeln!(w)?;

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl {valuetype} for {name} {{
Expand All @@ -387,7 +387,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
writeln!(w)?;

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"unsafe impl<'a> FromValue<'a> for {name} {{
Expand All @@ -406,7 +406,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
writeln!(w)?;

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl ToValue for {name} {{
Expand Down
35 changes: 19 additions & 16 deletions src/codegen/flags.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ use crate::{
analysis::flags::Info,
analysis::special_functions::Type,
codegen::general::{
self, cfg_condition, cfg_condition_no_doc, cfg_condition_string, cfg_deprecated, derives,
doc_alias, version_condition, version_condition_string,
self, cfg_condition, cfg_condition_doc, cfg_condition_no_doc, cfg_condition_string,
cfg_deprecated, derives, doc_alias, version_condition, version_condition_doc,
version_condition_no_doc, version_condition_string,
},
config::gobjects::GObject,
env::Env,
Expand Down Expand Up @@ -45,7 +46,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec<String>) {
if let Some(cfg) = version_condition_string(env, flags.version, false, 0) {
mod_rs.push(cfg);
}
if let Some(cfg) = cfg_condition_string(&config.cfg_condition, false, 0) {
if let Some(cfg) = cfg_condition_string(config.cfg_condition.as_ref(), false, 0) {
mod_rs.push(cfg);
}
mod_rs.push(format!("pub use self::flags::{};", flags.name));
Expand All @@ -65,10 +66,12 @@ fn generate_flags(
analysis: &Info,
) -> Result<()> {
let sys_crate_name = env.main_sys_crate_name();
cfg_deprecated(w, env, flags.deprecated_version, false, 0)?;
version_condition(w, env, flags.version, false, 0)?;
cfg_condition(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
version_condition_no_doc(w, env, flags.version, false, 0)?;
writeln!(w, "bitflags! {{")?;
cfg_condition_doc(w, config.cfg_condition.as_ref(), false, 1)?;
version_condition_doc(w, env, flags.version, false, 1)?;
cfg_deprecated(w, env, flags.deprecated_version, false, 1)?;
if config.must_use {
writeln!(w, " #[must_use]")?;
}
Expand Down Expand Up @@ -97,7 +100,7 @@ fn generate_flags(
let cfg_cond = member_config.iter().find_map(|m| m.cfg_condition.as_ref());
cfg_deprecated(w, env, deprecated_version, false, 2)?;
version_condition(w, env, version, false, 2)?;
cfg_condition(w, &cfg_cond, false, 2)?;
cfg_condition(w, cfg_cond, false, 2)?;
if member.c_identifier != member.name {
doc_alias(w, &member.c_identifier, "", 2)?;
}
Expand All @@ -123,7 +126,7 @@ fn generate_flags(
if !functions.is_empty() {
writeln!(w)?;
version_condition(w, env, flags.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
write!(w, "impl {} {{", analysis.name)?;
for func_analysis in functions {
function::generate(
Expand All @@ -148,15 +151,15 @@ fn generate_flags(
&analysis.specials,
None,
None,
&config.cfg_condition.as_ref(),
config.cfg_condition.as_ref(),
)?;

writeln!(w)?;

if config.generate_display_trait && !analysis.specials.has_trait(Type::Display) {
// Generate Display trait implementation.
version_condition(w, env, flags.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl fmt::Display for {0} {{\n\
Expand All @@ -169,7 +172,7 @@ fn generate_flags(
}

version_condition(w, env, flags.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"#[doc(hidden)]
Expand All @@ -193,7 +196,7 @@ impl IntoGlib for {name} {{
};

version_condition(w, env, flags.version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"#[doc(hidden)]
Expand All @@ -217,7 +220,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
.flatten();

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl StaticType for {name} {{
Expand All @@ -232,7 +235,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
writeln!(w)?;

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl {valuetype} for {name} {{
Expand All @@ -244,7 +247,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
writeln!(w)?;

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"unsafe impl<'a> FromValue<'a> for {name} {{
Expand All @@ -263,7 +266,7 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
writeln!(w)?;

version_condition(w, env, version, false, 0)?;
cfg_condition_no_doc(w, &config.cfg_condition.as_ref(), false, 0)?;
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
writeln!(
w,
"impl ToValue for {name} {{
Expand Down
4 changes: 2 additions & 2 deletions src/codegen/function.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ pub fn generate(
if !in_trait || only_declaration {
cfg_deprecated(w, env, analysis.deprecated_version, commented, indent)?;
}
cfg_condition(w, &analysis.cfg_condition, commented, indent)?;
cfg_condition(w, analysis.cfg_condition.as_ref(), commented, indent)?;
let version = Version::if_stricter_than(analysis.version, scope_version);
version_condition(w, env, version, commented, indent)?;
not_version_condition(w, analysis.not_version, commented, indent)?;
Expand Down Expand Up @@ -118,7 +118,7 @@ pub fn generate(
}

writeln!(w, "{}{}", tabs(indent), comment_prefix)?;
cfg_condition(w, &analysis.cfg_condition, commented, indent)?;
cfg_condition(w, analysis.cfg_condition.as_ref(), commented, indent)?;
version_condition(w, env, version, commented, indent)?;
not_version_condition(w, analysis.not_version, commented, indent)?;
doc_hidden(w, analysis.doc_hidden, comment_prefix, indent)?;
Expand Down
Loading

0 comments on commit 9e7b5ee

Please sign in to comment.