Adding `Wrapper` suffix to `EventHandler` and `EventHandler` type names

Summary:
It's maybe not so important/crucial, but this thing bothers me a lot.
We use raw opaque `EventTarget`, `InstanceHandle` and `EventHandler` pointers in application layer quite a lot and we don't have any kind of type-safety here. I believe all those opaque types should be represented as named scalar types which compiler at least can differentiate at compile time.
So I propose introducing named aliases for them which will point to particular empty `struct`s. This will allow us to tag types properly in all functions and methods and ensure that we pass right values as right arguments.
Again, they are *just aliases*, which are effectively still `void *`, no any additional logic or names are involved.

Unfortunately, those nice type names are already taken by `JSIFabricUIManager` local anonymous namespace (even if they are inside anonymous namespace we cannot use them https://stackoverflow.com/questions/3673353/anonymous-namespace-ambiguity).  I think it's fair to rename them because... it's local. And we already use `Wrapper` suffix for them anyways.

Reviewed By: fkgozali

Differential Revision: D8181151

fbshipit-source-id: 9b55b43fb671a56b32a862ac54f78d528e1188ce
This commit is contained in:
Valentin Shergin 2018-05-29 11:20:04 -07:00 коммит произвёл Facebook Github Bot
Родитель 57e7556b8d
Коммит 957ef606b9
1 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -22,5 +22,11 @@ enum class EventPriority {
Deferred = AsynchronousBatched,
};
// `InstanceHandler`, `EventTarget`, and `EventHandler` are all opaque
// raw pointers. We use `struct {} *` trick to differentiate them in compiler's
// eyes to ensure type safety.
using EventTarget = struct {} *;
using EventHandler = struct {} *;
} // namespace react
} // namespace facebook