Summary: Tests were run in 'opt', which masked issues alterted by asserts.
Test Plan: Unit tests
Reviewed By: delong.j@fb.com
FB internal diff:
D611957
}
Optional(const Optional& src) {
- construct(src.value());
+ if (src.hasValue()) {
+ construct(src.value());
+ } else {
+ hasValue_ = false;
+ }
}
Optional(Optional&& src) {
- construct(std::move(src.value()));
- src.clear();
+ if (src.hasValue()) {
+ construct(std::move(src.value()));
+ src.clear();
+ } else {
+ hasValue_ = false;
+ }
}
/* implicit */ Optional(const None& empty)
void clear() {
if (hasValue()) {
hasValue_ = false;
- value().~Value();
+ value_.~Value();
}
}
EXPECT_FALSE(opt);
}
+TEST(Optional, EmptyConstruct) {
+ Optional<int> opt;
+ EXPECT_FALSE(opt);
+ Optional<int> test1(opt);
+ EXPECT_FALSE(test1);
+ Optional<int> test2(std::move(opt));
+ EXPECT_FALSE(test2);
+}
+
TEST(Optional, Unique) {
Optional<unique_ptr<int>> opt;