You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
/*
|
|
|
|
* Copyright (c) 2019-present, Facebook, Inc.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Danger {
|
|
|
|
void foo();
|
|
|
|
void bar();
|
|
|
|
} // namespace Danger
|
|
|
|
|
|
|
|
void death();
|
|
|
|
|
|
|
|
void good();
|
|
|
|
|
|
|
|
namespace Ok {
|
|
|
|
void foo();
|
|
|
|
void bar();
|
|
|
|
} // namespace Ok
|
|
|
|
|
|
|
|
namespace Approved {
|
|
|
|
void baz() { death(); }
|
|
|
|
} // namespace Approved
|
|
|
|
|
|
|
|
namespace CheckFrom {
|
|
|
|
|
|
|
|
void death_via() { death(); }
|
|
|
|
|
|
|
|
void danger_via() {
|
|
|
|
Ok::foo();
|
|
|
|
Danger::foo();
|
|
|
|
}
|
|
|
|
|
|
|
|
void imminent_death() { death_via(); }
|
|
|
|
|
|
|
|
void imminent_danger() { danger_via(); }
|
|
|
|
|
|
|
|
void safe() {
|
|
|
|
good();
|
|
|
|
Ok::foo();
|
|
|
|
Ok::bar();
|
|
|
|
Approved::baz();
|
|
|
|
}
|
|
|
|
|
|
|
|
struct Destructive {
|
|
|
|
~Destructive() { imminent_death(); }
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace CheckFrom
|
|
|
|
|
|
|
|
void wild() {
|
|
|
|
Danger::bar();
|
|
|
|
CheckFrom::imminent_danger();
|
|
|
|
CheckFrom::death_via();
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: overrides, lambdas, passing addr of reaching fn,
|