summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2017-10-02Make `has_destructor` checks operate on TypeIdNick Fitzgerald
2017-10-02Tighten up `is_unsized` and `has_vtable` checks to operated on TypeIdNick Fitzgerald
2017-10-02Make methods/constructors/destructors use FunctionIdNick Fitzgerald
And also allow ID comparison across ID types, as this makes implementing the above much easier.
2017-10-02Introduce the `FunctionId` newtype for ids pointing to functionsNick Fitzgerald
2017-10-02Make `CompInfo::inner_vars` use `VarId` instead of `ItemId`Nick Fitzgerald
2017-10-02Introduce VarId for ids pointing to VarNick Fitzgerald
2017-10-02Put newtype-of-ItemId boilerplate behind a macroNick Fitzgerald
2017-10-02Introduce ModuleId to strongly type IDs pointing at ModulesNick Fitzgerald
2017-10-02Replace `as_type_id_unchecked` calls with checked calls where possibleNick Fitzgerald
2017-10-02Replacement should use TypeId rather than ItemIdNick Fitzgerald
2017-10-02Turn `CompInfo::inner_types` into TypeIdNick Fitzgerald
2017-10-02A bunch of parsing things should return TypeIdNick Fitzgerald
2017-10-02Make `Enum::repr` into a `TypeId`Nick Fitzgerald
2017-10-02`instantiate_template` should take a `TypeId` for the template definitionNick Fitzgerald
2017-10-02Make base members use TypeId rather than ItemIdNick Fitzgerald
2017-10-02Make a bunch more methods take generic idsNick Fitzgerald
2017-10-02Make comp fields contain `TypeId`sNick Fitzgerald
2017-10-02Make functions which take an ItemId generic to take any kind of idNick Fitzgerald
2017-10-02Make TemplateInstantiation's definition into a TypeIdNick Fitzgerald
The definition of a template is always a type, so it should be a TypeId rather than an ItemId. Template arguments, on the other hand are not guaranteed to be types. They can be constant values, for example.
2017-10-02Make `TypeKind::{Alias,TemplateAlias,Array,Pointer,Reference}` use `TypeId`Nick Fitzgerald
This commit makes certain `TypeKind`s that can only reference other types use `TypeId` instead of `ItemId`.
2017-10-02Resolve an `Item` with any id type that converts into an `ItemId`Nick Fitzgerald
2017-10-02Turn `build_templated_path` into `build_path`Nick Fitzgerald
None of the callers were passing template parameters.
2017-10-02Remove unused parameter to `codegen::utils::type_from_named`Nick Fitzgerald
2017-10-02Introduce the `TypeId` newtype over `ItemId`Nick Fitzgerald
This commit also makes `BindgenContext::resolve_type` take a `TypeId`, and adds unchecked conversions everywhere that we call it. Next, I'm going to go through the code base, replacing these unchecked conversions with checked ones, and tightening up types as I go.
2017-09-29ir: Prefer using known semantic parentsNick Fitzgerald
When choosing a parent ID for a type that we are parsing, prefer known semantic parents over the provided parent ID. It seems like we shouldn't even be passing explicit parent IDs around (they're often buggy), and instead should expand the `known_semantic_parent` infrastructure, but I'll leave that to some future work. Fixes #1048
2017-09-25Auto merge of #1022 - harlanhaskins:rustfmt-by-default, r=fitzgenbors-servo
Enable --rustfmt-bindings by default This patch flips --rustfmt-bindings to --no-rustfmt-bindings and enables formatting by default. If rustfmt is not accessible, a warning is printed and the bindings are printed unformatted. Addresses #977.
2017-09-25Auto merge of #1030 - emilio:repr, r=fitzgenbors-servo
codegen: Avoid generating wrong type for enums with unknown representation Fixes #1025
2017-09-25Auto merge of #1031 - emilio:warn-stderr, r=fitzgenbors-servo
lib: Print warnings to stderr instead of stdout. Seems like the right thing to do, and allows me to test stuff piping to rustc instead of saving to a file.
2017-09-25Auto merge of #1026 - alexeyzab:fix-compiling-expectations-macos, r=fitzgenbors-servo
Make objc-related expectations compile Fixes #1004. After looking at how `msg_send!` is supposed to be used, I realized that we were erroneously passing type signatures to it. The expectations compile now, but some of them are not formatted properly. My guess is that `rustfmt` does not know how to format the following: ``` msg_send!(obj, arg1:1 arg2:2 arg3:3) ``` Notice the lack of separatros between the `arg`s. Any advice on how to proceed here is appreciated. r? @fitzgen
2017-09-25lib: Print warnings to stderr instead of stdout.Emilio Cobos Álvarez
2017-09-25codegen: Avoid generating wrong type for enums with unknown representations.Emilio Cobos Álvarez
2017-09-24Auto merge of #1005 - fitzgen:some-little-deriving-cleanups, r=emiliobors-servo
Some little deriving cleanups See each commit for details. r? @emilio
2017-09-23Make objc-related expectations compileAlexey Zabelin
WIP, fixes #1004. After looking at how `msg_send!` is supposed to be used, I realized that we were erroneously passing type signatures to it. The expectations compile now, but some of them are not formatted properly. My guess is that `rustfmt` does not know how to format the following: ``` msg_send!(obj, arg1:1 arg2:2 arg3:3) ``` Notice the lack of separatros between `arg`s.
2017-09-22Deanonymize fieldsSergey Pepyakin
Clean. Add timer. Clean codegen
2017-09-22Enable --rustfmt-bindings by defaultHarlan Haskins
This patch flips --rustfmt-bindings to --no-rustfmt-bindings and enables formatting by default. If rustfmt is not accessible, a warning is printed and the bindings are printed unformatted.
2017-09-22Auto merge of #1016 - pepyakin:impl-debug-fixes, r=fitzgenbors-servo
Impl_debug fixes r? @fitzgen
2017-09-22Fix condition in command_line_flags for impl_debugSergey Pepyakin
2017-09-22Rename derive_debug → impl_debug.Sergey Pepyakin
2017-09-22Generate base names upon constructon.Sergey Pepyakin
2017-09-21Auto merge of #1008 - AndrewGaspar:underscore-identifier, r=fitzgenbors-servo
Translate _ as __ This change treats _ as a reserved identifier to resolve the bug reported in #631. I have one concern - if the header has both an `_` and `__` identifier in the global namespace, this will cause a conflict. However, it seems like we already don't handle that case for `keyword_` (e.g. `abstract_`, `alignof_`, etc.) so it doesn't seem like we need a solution specifically for `__` in this change. Fixes #631.
2017-09-20Translate _ as __Andrew Gaspar
2017-09-20Clean up comments about the `Can[Trivially]Derive*` traitsNick Fitzgerald
The whole "should be a no-op" thing isn't really true for all of the traits, especially in the face of black listing. Also further expounded on the differences between the trivial versions and normal versions.
2017-09-20Common method for whether function pointers can trivially derive traitsNick Fitzgerald
Again, this logic was getting copied all over the place, and it is nice to have a single canonical definition.
2017-09-20Factor array size vs Rust derive limit checking into a common methodNick Fitzgerald
We were copying it around and it will be easier if it is defined in one place.
2017-09-20Clean up some derive-related commentsNick Fitzgerald
Changing "partialeq" and "partialord" into "`PartialEq`" and "`PartialOrd`" where it makes sense.
2017-09-19Add large bitfield derive test and fix missing limitOliver Geller
2017-09-19Ensure all derive analyses check array limit on bitfieldsOliver Geller
2017-09-19Auto merge of #996 - alexeyzab:add-no-partialeq-command, r=fitzgenbors-servo
Add --no-partialeq <regex> flag Related to #965. - [x] Add a new RegexSet member to bindgen::Builder (similar to the whitelisted_types set). - [x] A Builder method to add strings to that RegexSet. - [x] Plumbing in src/options.rs to convert --no-partialeq <regex> CLI flags into invocations of the builder method. - [x] Make the MonotoneFramework::constrain function in src/ir/analysis/derive_partialeq.rs check if the given item is explicitly marked not to be Partialeq, and if so, insert it into the self.cannot_derive_partialeq set via return self.insert(id). - [x] Tests! - [x] When the no-partialeq type is transitively referenced by a whitelisted item - [x] When the no-partialeq type is explicitly whitelisted - [x] When the no-partialeq type is marked opaque This is my first pass at implementing this functionality, I haven't implemented the tests yet. I wanted to make sure I am on the right track, particularly when it comes to updating `MonotoneFramework::constrain`. r? @fitzgen
2017-09-19Add --no-partialeq <regex> flagAlexey Zabelin
- [x] Add a new RegexSet member to bindgen::Builder (similar to the whitelisted_types set). - [x] A Builder method to add strings to that RegexSet. - [x] Plumbing in src/options.rs to convert --no-partialeq <regex> CLI flags into invocations of the builder method. - [x] Make the MonotoneFramework::constrain function in src/ir/analysis/derive_partialeq.rs check if the given item is explicitly marked not to be Partialeq, and if so, insert it into the self.cannot_derive_partialeq set via return self.insert(id). - [x] Tests! - [x] When the no-partialeq type is transitively referenced by a whitelisted item - [x] When the no-partialeq type is explicitly whitelisted - [x] When the no-partialeq type is marked opaque Fixes #965
2017-09-19Fix panic on has_float None unwrapSergey Pepyakin