// PR c++/39367 // { dg-options "-O" } class QScriptEnginePrivate; class QScriptClassInfo; namespace QScript { enum Type { InvalidType }; }; class QScriptValueImpl { public: inline QScriptValueImpl(); QScript::Type m_type; }; namespace QScript { namespace Ecma { class Core { public: inline QScriptEnginePrivate *engine() const { } inline QScriptClassInfo *classInfo() const { } QScriptValueImpl publicPrototype; }; class Boolean: public Core { void newBoolean(QScriptValueImpl *result, bool value = false); }; } template class Buffer { public: inline void reserve(int num); inline void resize(int s); T *m_data; int m_capacity; int m_size; }; } template void QScript::Buffer::resize(int s) { if (m_capacity < s) reserve (s << 1); } template void QScript::Buffer::reserve(int x) { T *new_data = new T[m_capacity]; for (int i=0; i m_values; }; class QScriptEnginePrivate { public: inline QScriptObject *allocObject() { return 0; } inline void newObject(QScriptValueImpl *o, const QScriptValueImpl &proto, QScriptClassInfo *oc = 0); }; inline void QScriptEnginePrivate::newObject(QScriptValueImpl *o, const QScriptValueImpl &proto, QScriptClassInfo *oc) { QScriptObject *od = allocObject(); od->reset(); } inline QScriptValueImpl::QScriptValueImpl() : m_type(QScript::InvalidType) { } inline void QScriptObject::reset() { m_values.resize(0); } namespace QScript { namespace Ecma { void Boolean::newBoolean(QScriptValueImpl *result, bool value) { engine()->newObject(result, publicPrototype, classInfo()); } } }