// Purpose: // Check that \DexExpectWatchType applies penalties when expected // types are not found and unexpected types are. // // UNSUPPORTED: system-darwin // // // NOTE: This test passes but not in the expected way on Windows. // TODO: Reduce this test's coverage and be more specific about // expected behaviour. // // RUN: not %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_watch_type.cpp: template class Doubled { public: Doubled(const T & to_double) : m_member(to_double * 2) {} T GetVal() { T to_return = m_member; // DexLabel('gv_start') return to_return; // DexLabel('gv_end') } static T static_doubler(const T & to_double) { T result = 0; // DexLabel('sd_start') result = to_double * 2; return result; // DexLabel('sd_end') } private: T m_member; }; int main() { auto myInt = Doubled(5); // DexLabel('main_start') auto myDouble = Doubled(5.5); auto staticallyDoubledInt = Doubled::static_doubler(5); auto staticallyDoubledDouble = Doubled::static_doubler(5.5); return int(double(myInt.GetVal()) + double(staticallyDoubledInt) + myDouble.GetVal() + staticallyDoubledDouble); // DexLabel('main_end') } // DexExpectWatchType('m_member', 'int', 'double', from_line=ref('gv_start'), to_line=ref('gv_end')) // THIS COMMAND should create a penalty for a missing type 'const double' and unexpected type 'const double &' // DexExpectWatchType('to_double', 'const double', 'const int &', from_line=ref('sd_start'), to_line=ref('sd_end')) // DexExpectWatchType('myInt', 'Doubled', from_line=ref('main_start'), to_line=ref('main_end')) // DexExpectWatchType('myDouble', 'Doubled', from_line=ref('main_start'), to_line=ref('main_end')) // DexExpectWatchType('staticallyDoubledInt', 'int', from_line=ref('main_start'), to_line=ref('main_end')) // DexExpectWatchType('staticallyDoubledDouble', 'double', from_line=ref('main_start'), to_line=ref('main_end'))