Commit 52d6e34b authored by ck's avatar ck
Browse files

Merge branch 'master' of scm.dev.nokia.troll.no:creator/mainline

Conflicts:
	src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
parents 0b49edbb e2a899e3
......@@ -843,7 +843,7 @@ DOCSET_FEEDNAME = "Qt Creator API"
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
# will append .docset to the name.
DOCSET_BUNDLE_ID = com.qtsoftware.qt-creator
DOCSET_BUNDLE_ID = com.nokia.qt-creator
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
......
diff --git a/doc/addressbook-sdk.qdoc b/doc/addressbook-sdk.qdoc
index 0441666..7012ea6 100644
--- a/doc/addressbook-sdk.qdoc
+++ b/doc/addressbook-sdk.qdoc
@@ -139,7 +139,7 @@
\section1 Placing Widgets on The Form
In the \gui{Project Sidebar}, double-click on the \c{addressbook.ui} file.
- The \QD plugin will be launched, allowing you to design your program's user
+ The \QD form editor will be launched, allowing you to design your program's user
interface.
We require two \l{QLabel}s to label the input fields as well as a QLineEdit
@@ -156,6 +156,7 @@
diagram below shows the layout cells and the position of our widgets. Place
your widgets accordingly and save the form by choosing
\gui{File | Save} or using the \key{Ctrl+S} shortcut.
+ (We have to actually layout the widgets in a grid layout, this step seems to be missing to me?)
\image addressbook-tutorial-part1-labeled-screenshot.png
@@ -311,7 +312,7 @@
\snippet examples/addressbook-sdk/part2/addressbook.h slot definition
Since the \c AddressBook class is a subclass of QWidget, Qt Creator
- includes QWidget in the hedaer file.
+ includes QWidget in the header file.
\snippet examples/addressbook-sdk/part2/addressbook.h include
@@ -323,7 +324,7 @@
\snippet examples/addressbook-sdk/part2/addressbook.h members
We also declare two private QString objects, \c oldName and \c oldAddress.
- These objects are needed to hold the name and address of hte contact that
+ These objects are needed to hold the name and address of the contact that
was last displayed, before the user clicked \gui Add. So, when the user
clicks \gui Cancel, we can revert to displaying the details of the last
contact.
@@ -499,7 +500,7 @@
\snippet examples/addressbook-sdk/part3/addressbook.cpp enable navigation
- We also include these lins of code in the \c cancel() function.
+ We also include these lines of code in the \c cancel() function.
Recall that we intend to emulate a circularly-linked list with our QMap
object, \c contacts. So in the \c next() function, we obtain an iterator
@@ -722,11 +723,12 @@
#image
- We begin by adding a new \c{.ui} file to our project. Right click on your
+ We begin by adding a new \c{.ui} file and a corresponding class to our project. Right click on your
project and select \gui{Add New...}. In the \gui{New File} dialog, select
- \gui{Qt Designer Form}. In the \gui{Qt Designer Form} dialog, select
- \e{Dialog without buttons}. Name it \c{finddialog.ui} and add it to your
- project. The \QD plugin within Qt Creator will now display your new form.
+ \gui{Qt Designer Form Class}. In the \gui{Qt Designer Form Class} dialog, select
+ \e{Dialog without buttons}. Name the class \c{FindDialog} and add the files it to your
+ project. Open your new form in the \QD form editor within Qt Creator by
+ double-clicking on the \c{finddialog.ui} file in the \gui{Project Sidebar}.
To replicate the screenshot above, we need a label, a line edit, and a push
button. Drag these onto your form. Set their text accordingly and name them
@@ -759,6 +761,9 @@
\c findContact() function know when the \c FindDialog object has been
closed. We will explain this logic in further detail when discussing the
\c findContact() function.
+ (The above paragraph is not up to date, since clicked() is not connected
+ to accept(). The description of accept() can move below to the implementation
+ of findClicked().)
\image addressbook-tutorial-part5-signals-and-slots.png
@@ -766,17 +771,17 @@
\gui Find button without entering a contact's name. Then, we set
\c findText to the search string, extracted from \c lineEdit. After that,
we clear the contents of \c lineEdit and hide the dialog.
+ (There is no findText member. The description of accept() should move here, together
+ with words about reject.)
\snippet examples/addressbook-sdk/part5/finddialog.cpp findClicked
- The \c findText variable has a public getter function, \c getFindText(),
- associated with it. Since we only ever set \c findText directly in both
- the constructor and in hte \c findClicked() function, we do not create a
- setter function to accompany \c getFindText(). Because \c getFindText() is
+ The \c text of the find dialog's line edit has a public getter function, \c findText(),
+ associated with it. Because \c findText() is
public, classes instantiating and using \c FindDialog can always access the
search string that the user has entered and accepted.
- \snippet examples/addressbook-sdk/part5/finddialog.cpp getFindText
+ \snippet examples/addressbook-sdk/part5/finddialog.cpp findText
\section1 The AddressBook Class
@@ -788,23 +793,9 @@
So far, all our address book features have a QPushButton and a
corresponding slot. Similarly, for the \gui Find feature, we have
- \c findButton and \c findContact().
+ \c {ui->findButton} and \c findContact().
\snippet examples/addressbook-sdk/part5/addressbook.h slot definition
- \dots
- \snippet examples/addressbook-sdk/part5/addressbook.h private members
-
- Lastly, we declare the private variable, \c dialog, which we will use to
- refer to an instance of \c FindDialog.
-
- Once we have instantiated a dialog, we might want to use it more than once;
- using a private variable allows us to refer to it from more than one place
- in the class.
-
- Within the \c AddressBook class's constructor, we insantiate our private
- objects, \c findButton and \c dialog:
-
- \snippet examples/addressbook-sdk/part5/addressbook.cpp private members
Next, we connect the \c{findButton}'s \l{QPushButton::}{clicked()} signal
to \c findContact().
@@ -818,10 +809,12 @@
We start out by displaying the \c FindDialog instance, \c dialog. This is
when the user enters a contact name to look up. Once the user clicks the
dialog's \c findButton, the dialog is hidden and the result code is set to
- QDialog::Accepted. THis ensures that our \c if statement is always true.
+ either QDialog::Accepted or QDialog::Rejected by the FindDialog's
+ \c findClicked() method. This ensures that we only search for a contact
+ if the user typed something in the FindDialog's line edit.
We then proceed to extract the search string, which in this case is
- \c contactName, using \c{FindDialog}'s \c getFindText() function. If the
+ \c contactName, using \c{FindDialog}'s \c findText() function. If the
contact exists in our address book, we display it immediately. Otherwise,
we display the QMessageBox shown below to indicate that their search
failed.
......@@ -35,6 +35,8 @@
#include <QtCore/QMap>
#include <QtCore/QSet>
#include <QtCore/QVariant>
#include <QtCore/QFileInfo>
#include <QtCore/QCoreApplication>
#include <QtGui/QAction>
#include <string>
......@@ -51,6 +53,7 @@ bool optTestUninitialized = false;
bool optTestAll = false;
bool optEmptyContainers = false;
unsigned optVerbose = 0;
const char *appPath = 0;
// Provide address of type of be tested.
// When testing unitialized memory, allocate at random.
......@@ -482,7 +485,6 @@ static int dumpStdMapStringString()
return 0;
}
static int dumpQObject()
{
// Requires the childOffset to be know, but that is not critical
......@@ -517,6 +519,16 @@ static int dumpQObject()
return 0;
}
static int dumpQFileInfo()
{
QFileInfo test(QString::fromLatin1(appPath));
prepareInBuffer("QFileInfo", "local.qfileinfo", "local.qfileinfo","");
qDumpObjectData440(2, 42, testAddress(&test), 1, 0, 0, 0, 0);
fputs(qDumpOutBuffer, stdout);
fputc('\n', stdout);
return 0;
}
static int dumpQObjectList()
{
// Requires the childOffset to be know, but that is not critical
......@@ -566,6 +578,7 @@ static TypeDumpFunctionMap registerTypes()
rc.insert("set<QString>", dumpStdQStringSet);
rc.insert("map<int,string>", dumpStdMapIntString);
rc.insert("map<string,string>", dumpStdMapStringString);
rc.insert("QFileInfo", dumpQFileInfo);
rc.insert("QObject", dumpQObject);
rc.insert("QObjectList", dumpQObjectList);
rc.insert("QVariant", dumpQVariant);
......@@ -592,6 +605,7 @@ static void usage(const char *b, const TypeDumpFunctionMap &tdm)
int main(int argc, char *argv[])
{
appPath = argv[0];
printf("\nQt Creator Debugging Helper testing tool\n\n");
printf("Running query protocol\n");
qDumpObjectData440(1, 42, 0, 1, 0, 0, 0, 0);
......
......@@ -65,7 +65,7 @@ void CheckUndefinedSymbols::operator()(AST *ast)
QByteArray CheckUndefinedSymbols::templateParameterName(NameAST *ast) const
{
if (ast && ast->name) {
if (Identifier *id = ast->name->identifier())
if (const Identifier *id = ast->name->identifier())
return QByteArray::fromRawData(id->chars(), id->size());
}
......@@ -92,7 +92,7 @@ bool CheckUndefinedSymbols::isType(const QByteArray &name) const
Symbol *member = members->symbolAt(m);
if (member->isTypedef() && member->isDeclaration()) {
if (Identifier *id = member->identifier()) {
if (const Identifier *id = member->identifier()) {
if (name == id->chars())
return true;
}
......@@ -114,7 +114,7 @@ bool CheckUndefinedSymbols::isType(const QByteArray &name) const
return _types.contains(name);
}
bool CheckUndefinedSymbols::isType(Identifier *id) const
bool CheckUndefinedSymbols::isType(const Identifier *id) const
{
if (! id)
return false;
......@@ -122,21 +122,21 @@ bool CheckUndefinedSymbols::isType(Identifier *id) const
return isType(QByteArray::fromRawData(id->chars(), id->size()));
}
void CheckUndefinedSymbols::addType(Name *name)
void CheckUndefinedSymbols::addType(const Name *name)
{
if (! name)
return;
if (Identifier *id = name->identifier())
if (const Identifier *id = name->identifier())
_types.insert(QByteArray(id->chars(), id->size()));
}
void CheckUndefinedSymbols::addProtocol(Name *name)
void CheckUndefinedSymbols::addProtocol(const Name *name)
{
if (!name)
return;
if (Identifier *id = name->identifier())
if (const Identifier *id = name->identifier())
_protocols.insert(QByteArray(id->chars(), id->size()));
}
......@@ -176,7 +176,7 @@ void CheckUndefinedSymbols::buildTypeMap(NamespaceBinding *binding, QSet<Namespa
if (! processed->contains(binding)) {
processed->insert(binding);
if (Identifier *id = binding->identifier()) {
if (const Identifier *id = binding->identifier()) {
_namespaceNames.insert(QByteArray(id->chars(), id->size()));
}
......@@ -256,7 +256,7 @@ bool CheckUndefinedSymbols::visit(NamedTypeSpecifierAST *ast)
unsigned line, col;
getTokenStartPosition(ast->firstToken(), &line, &col);
// qWarning() << _doc->fileName() << line << col;
} else if (Identifier *id = ast->name->name->identifier()) {
} else if (const Identifier *id = ast->name->name->identifier()) {
if (! isType(id)) {
if (FunctionDeclaratorAST *functionDeclarator = currentFunctionDeclarator()) {
if (functionDeclarator->as_cpp_initializer)
......@@ -294,7 +294,7 @@ bool CheckUndefinedSymbols::visit(ClassSpecifierAST *ast)
Symbol *symbol = klass->memberAt(i);
if (symbol->name() && symbol->name()->isNameId()) {
NameId *nameId = symbol->name()->asNameId();
const NameId *nameId = symbol->name()->asNameId();
if (! qstrcmp(nameId->identifier()->chars(), "qt_check_for_QOBJECT_macro")) {
hasQ_OBJECT_CHECK = true;
......@@ -367,8 +367,8 @@ bool CheckUndefinedSymbols::visit(BaseSpecifierAST *base)
if (NameAST *nameAST = base->name) {
bool resolvedBaseClassName = false;
if (Name *name = nameAST->name) {
Identifier *id = name->identifier();
if (const Name *name = nameAST->name) {
const Identifier *id = name->identifier();
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (isType(spell))
resolvedBaseClassName = true;
......@@ -403,10 +403,10 @@ bool CheckUndefinedSymbols::visit(UsingDirectiveAST *ast)
bool CheckUndefinedSymbols::visit(QualifiedNameAST *ast)
{
if (ast->name) {
QualifiedNameId *q = ast->name->asQualifiedNameId();
const QualifiedNameId *q = ast->name->asQualifiedNameId();
for (unsigned i = 0; i < q->nameCount() - 1; ++i) {
Name *name = q->nameAt(i);
if (Identifier *id = name->identifier()) {
const Name *name = q->nameAt(i);
if (const Identifier *id = name->identifier()) {
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (! (_namespaceNames.contains(spell) || isType(id))) {
translationUnit()->warning(ast->firstToken(),
......@@ -474,8 +474,8 @@ bool CheckUndefinedSymbols::visit(ObjCClassDeclarationAST *ast)
if (NameAST *nameAST = ast->superclass) {
bool resolvedSuperClassName = false;
if (Name *name = nameAST->name) {
Identifier *id = name->identifier();
if (const Name *name = nameAST->name) {
const Identifier *id = name->identifier();
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (isType(spell))
resolvedSuperClassName = true;
......@@ -496,8 +496,8 @@ bool CheckUndefinedSymbols::visit(ObjCProtocolRefsAST *ast)
if (NameAST *nameAST = iter->value) {
bool resolvedProtocolName = false;
if (Name *name = nameAST->name) {
Identifier *id = name->identifier();
if (const Name *name = nameAST->name) {
const Identifier *id = name->identifier();
const QByteArray spell = QByteArray::fromRawData(id->chars(), id->size());
if (isProtocol(spell))
resolvedProtocolName = true;
......@@ -522,11 +522,11 @@ bool CheckUndefinedSymbols::visit(ObjCProtocolRefsAST *ast)
bool CheckUndefinedSymbols::visit(ObjCPropertyDeclarationAST *ast)
{
for (List<ObjCPropertyDeclaration *> *iter = ast->symbols; iter; iter = iter->next) {
if (Name *getterName = iter->value->getterName()) {
if (/*Name *getterName = */ iter->value->getterName()) {
// FIXME: resolve the symbol for the name, and check its signature.
}
if (Name *setterName = iter->value->setterName()) {
if (/*Name *setterName = */ iter->value->setterName()) {
// FIXME: resolve the symbol for the name, and check its signature.
}
}
......
......@@ -52,14 +52,14 @@ public:
protected:
using ASTVisitor::visit;
bool isType(Identifier *id) const;
bool isType(const Identifier *id) const;
bool isType(const QByteArray &name) const;
void addType(Name *name);
void addType(const Name *name);
void buildTypeMap(Class *klass);
void buildMemberTypeMap(Symbol *member);
void buildTypeMap(NamespaceBinding *binding, QSet<NamespaceBinding *> *processed);
void addProtocol(Name *name);
void addProtocol(const Name *name);
bool isProtocol(const QByteArray &name) const;
FunctionDeclaratorAST *currentFunctionDeclarator() const;
......
......@@ -57,7 +57,7 @@ Location::Location(Symbol *symbol)
_sourceLocation(symbol->sourceLocation())
{ }
Location::Location(StringLiteral *fileId, unsigned sourceLocation)
Location::Location(const StringLiteral *fileId, unsigned sourceLocation)
: _fileId(fileId), _sourceLocation(sourceLocation)
{ }
......@@ -79,11 +79,11 @@ NamespaceBinding::~NamespaceBinding()
qDeleteAll(classBindings);
}
NameId *NamespaceBinding::name() const
const NameId *NamespaceBinding::name() const
{
if (symbols.size()) {
if (Name *name = symbols.first()->name()) {
NameId *nameId = name->asNameId();
if (const Name *name = symbols.first()->name()) {
const NameId *nameId = name->asNameId();
Q_ASSERT(nameId != 0);
return nameId;
......@@ -93,9 +93,9 @@ NameId *NamespaceBinding::name() const
return 0;
}
Identifier *NamespaceBinding::identifier() const
const Identifier *NamespaceBinding::identifier() const
{
if (NameId *nameId = name())
if (const NameId *nameId = name())
return nameId->identifier();
return 0;
......@@ -113,7 +113,7 @@ NamespaceBinding *NamespaceBinding::globalNamespaceBinding()
return it;
}
Binding *NamespaceBinding::findClassOrNamespaceBinding(Identifier *id, QSet<Binding *> *processed)
Binding *NamespaceBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed)
{
if (processed->contains(this))
return 0;
......@@ -144,7 +144,7 @@ Binding *NamespaceBinding::findClassOrNamespaceBinding(Identifier *id, QSet<Bind
return 0;
}
ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *processed)
ClassBinding *NamespaceBinding::findClassBinding(const Name *name, QSet<Binding *> *processed)
{
if (! name)
return 0;
......@@ -156,7 +156,7 @@ ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *pr
Binding *current = this;
for (unsigned i = 0; i < q->nameCount(); ++i) {
Identifier *nameId = q->nameAt(i)->identifier();
const Identifier *nameId = q->nameAt(i)->identifier();
if (! nameId)
return 0;
......@@ -173,7 +173,7 @@ ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *pr
processed->insert(this);
Identifier *id = name->identifier();
const Identifier *id = name->identifier();
foreach (ClassBinding *classBinding, classBindings) {
if (id->isEqualTo(classBinding->identifier()))
......@@ -191,19 +191,19 @@ ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *pr
return 0;
}
NamespaceBinding *NamespaceBinding::findNamespaceBinding(Name *name)
NamespaceBinding *NamespaceBinding::findNamespaceBinding(const Name *name)
{
if (! name)
return anonymousNamespaceBinding;
else if (NameId *nameId = name->asNameId())
else if (const NameId *nameId = name->asNameId())
return findNamespaceBindingForNameId(nameId, /*lookAtParent = */ true);
else if (const QualifiedNameId *q = name->asQualifiedNameId()) {
NamespaceBinding *current = this;
for (unsigned i = 0; i < q->nameCount(); ++i) {
NameId *namespaceName = q->nameAt(i)->asNameId();
const NameId *namespaceName = q->nameAt(i)->asNameId();
if (! namespaceName)
return 0;
......@@ -225,14 +225,14 @@ NamespaceBinding *NamespaceBinding::findNamespaceBinding(Name *name)
return 0;
}
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId(NameId *name,
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId(const NameId *name,
bool lookAtParentNamespace)
{
QSet<NamespaceBinding *> processed;
return findNamespaceBindingForNameId_helper(name, lookAtParentNamespace, &processed);
}
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(NameId *name,
NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(const NameId *name,
bool lookAtParentNamespace,
QSet<NamespaceBinding *> *processed)
{
......@@ -242,12 +242,12 @@ NamespaceBinding *NamespaceBinding::findNamespaceBindingForNameId_helper(NameId
processed->insert(this);
foreach (NamespaceBinding *binding, children) {
Name *bindingName = binding->name();
const Name *bindingName = binding->name();
if (! bindingName)
continue;
if (NameId *bindingNameId = bindingName->asNameId()) {
if (const NameId *bindingNameId = bindingName->asNameId()) {
if (name->isEqualTo(bindingNameId))
return binding;
}
......@@ -296,7 +296,7 @@ NamespaceBinding *NamespaceBinding::findOrCreateNamespaceBinding(Namespace *symb
}
static void closure(const Location &loc,
NamespaceBinding *binding, Name *name,
NamespaceBinding *binding, const Name *name,
QList<NamespaceBinding *> *bindings)
{
if (bindings->contains(binding))
......@@ -306,7 +306,7 @@ static void closure(const Location &loc,
Q_ASSERT(name->isNameId());
Identifier *id = name->asNameId()->identifier();
const Identifier *id = name->asNameId()->identifier();
bool ignoreUsingDirectives = false;
foreach (Namespace *symbol, binding->symbols) {
......@@ -334,13 +334,13 @@ static void closure(const Location &loc,
NamespaceBinding *NamespaceBinding::resolveNamespace(const Location &loc,
Name *name,
const Name *name,
bool lookAtParent)
{
if (! name)
return 0;
else if (NameId *nameId = name->asNameId()) {
else if (const NameId *nameId = name->asNameId()) {
QList<NamespaceBinding *> bindings;
closure(loc, this, nameId, &bindings);
......@@ -394,7 +394,7 @@ QByteArray NamespaceBinding::qualifiedId() const
s.append(parent->qualifiedId());
s.append("::");
if (Identifier *id = identifier())
if (const Identifier *id = identifier())
s.append(id->chars(), id->size());
else
......@@ -409,7 +409,7 @@ QByteArray ClassBinding::qualifiedId() const
QByteArray s = parent->qualifiedId();
s += "::";
if (Identifier *id = identifier())
if (const Identifier *id = identifier())
s.append(id->chars(), id->size());
else
......@@ -418,7 +418,7 @@ QByteArray ClassBinding::qualifiedId() const
return s;
}
Binding *ClassBinding::findClassOrNamespaceBinding(Identifier *id, QSet<Binding *> *processed)
Binding *ClassBinding::findClassOrNamespaceBinding(const Identifier *id, QSet<Binding *> *processed)
{
if (id->isEqualTo(identifier()))
return this;
......@@ -447,7 +447,7 @@ Binding *ClassBinding::findClassOrNamespaceBinding(Identifier *id, QSet<Binding
return 0;
}
ClassBinding *ClassBinding::findClassBinding(Name *name, QSet<Binding *> *processed)
ClassBinding *ClassBinding::findClassBinding(const Name *name, QSet<Binding *> *processed)
{
if (! name)
return 0;
......@@ -461,7 +461,7 @@ ClassBinding *ClassBinding::findClassBinding(Name *name, QSet<Binding *> *proces
Binding *currentBinding = this;
for (unsigned i = 0; i < q->nameCount() - 1; ++i) {
Identifier *id = q->nameAt(i)->identifier();
const Identifier *id = q->nameAt(i)->identifier();
if (! id)
return 0;
......@@ -479,12 +479,12 @@ ClassBinding *ClassBinding::findClassBinding(Name *name, QSet<Binding *> *proces
return 0;
}
if (Identifier *id = name->identifier()) {
if (const Identifier *id = name->identifier()) {
if (id->isEqualTo(identifier()))
return this;
foreach (ClassBinding *nestedClassBinding, children) {
if (Identifier *nestedClassId = nestedClassBinding->identifier()) {
if (const Identifier *nestedClassId = nestedClassBinding->identifier()) {
if (nestedClassId->isEqualTo(id))
return nestedClassBinding;
}
......@@ -549,7 +549,7 @@ ClassBinding::ClassBinding(ClassBinding *parentClass)
ClassBinding::~ClassBinding()
{ qDeleteAll(children); }
Name *ClassBinding::name() const
const Name *ClassBinding::name() const
{
if (symbols.isEmpty())
return 0;
......@@ -557,9 +557,9 @@ Name *ClassBinding::name() const
return symbols.first()->name();
}
Identifier *ClassBinding::identifier() const
const Identifier *ClassBinding::identifier() const
{
if (Name *n = name())
if (const Name *n = name())
return n->identifier();
return 0;
......@@ -623,12 +623,12 @@ protected:
NamespaceBinding *bind(Symbol *symbol, NamespaceBinding *binding);
NamespaceBinding *findOrCreateNamespaceBinding(Namespace *symbol);
NamespaceBinding *resolveNamespace(const Location &loc, Name *name);
NamespaceBinding *resolveNamespace(const Location &loc, const Name *name);
NamespaceBinding *switchNamespaceBinding(NamespaceBinding *binding);
ClassBinding *findOrCreateClassBinding(Class *classSymbol);
ClassBinding *findClassBinding(Name *name);
ClassBinding *findClassBinding(const Name *name);
ClassBinding *switchClassBinding(ClassBinding *binding);
......@@ -665,7 +665,7 @@ NamespaceBinding *Binder::bind(Symbol *symbol, NamespaceBinding *binding)
NamespaceBinding *Binder::findOrCreateNamespaceBinding(Namespace *symbol)
{ return namespaceBinding->findOrCreateNamespaceBinding(symbol); }
NamespaceBinding *Binder::resolveNamespace(const Location &loc, Name *name)