Don't try to codegen static into an impl

Closes #194
This commit is contained in:
Alex Crichton
2018-05-11 08:28:09 -07:00
parent 06664b34ce
commit ca8809b4e9
3 changed files with 51 additions and 4 deletions

View File

@ -618,6 +618,14 @@ impl Import {
}
impl ImportKind {
pub fn fits_on_impl(&self) -> bool {
match *self {
ImportKind::Function(_) => true,
ImportKind::Static(_) => false,
ImportKind::Type(_) => false,
}
}
fn shared(&self) -> shared::ImportKind {
match *self {
ImportKind::Function(ref f) => shared::ImportKind::Function(f.shared()),

View File

@ -44,14 +44,16 @@ impl ToTokens for ast::Program {
}
}
for i in self.imports.iter() {
match i.js_namespace {
Some(ns) if types.contains(&ns) => {
DescribeImport(&i.kind).to_tokens(tokens);
if let Some(ns) = i.js_namespace {
if types.contains(&ns) && i.kind.fits_on_impl() {
let kind = &i.kind;
(quote! { impl #ns { #kind } }).to_tokens(tokens);
}
_ => i.kind.to_tokens(tokens),
}
DescribeImport(&i.kind).to_tokens(tokens);
i.kind.to_tokens(tokens);
}
for e in self.enums.iter() {
e.to_tokens(tokens);