emscripten-core / emscripten-core/emscripten
Documentation doesn't match implementation in WebIDL_Binder: Use of [Const] attribute for methods
- Dominant language
- C++
- Stars
- 27.6k
- Forks
- 3.6k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 105
Description
Hello,
Noticed a mismatch between documentation and implementation related to the use of [Const] attributes for method return types in the `tools/webidl_binder.py `
From the documentation:
> C++ arguments or return types that use const can be specified in IDL using [Const].
>
> For example, the following code fragments show the C++ and IDL for a function that returns a constant pointer object.
>
> //C++
> `const myObject* getAsConst();`
> // WebIDL
> `[Const] myObject getAsConst();`
So the documentation states that [Const] attribute applies to the return type of the method.
However, in reality, using the [Const] attribute in the manner above results in the method being marked as `const`, not the return type. This is particularly a problem when generating the Javascript implementation class for an abstract C++ interface.
Example:
`[Const] DOMString foo();`
turns into
`char* foo() const` in the generated Glue C++ source file.
The documentation never mentions that const methods are supported, so I believe this is a bug in the implementation.
Contributor guide
Assessment
This issue has not been assessed yet.