Qml: Make import classification in Bind less verbose.

This commit is contained in:
Christian Kamm
2010-09-16 09:40:19 +02:00
parent b7384af062
commit 97c07292aa
4 changed files with 38 additions and 47 deletions

View File

@@ -579,15 +579,7 @@ AST::Node *SemanticInfo::nodeUnderCursor(int pos) const
const unsigned cursorPosition = pos;
foreach (const Bind::ImportInfo &import, document->bind()->fileImports()) {
if (importContainsCursor(import.ast, cursorPosition))
return import.ast;
}
foreach (const Bind::ImportInfo &import, document->bind()->directoryImports()) {
if (importContainsCursor(import.ast, cursorPosition))
return import.ast;
}
foreach (const Bind::ImportInfo &import, document->bind()->libraryImports()) {
foreach (const Bind::ImportInfo &import, document->bind()->imports()) {
if (importContainsCursor(import.ast, cursorPosition))
return import.ast;
}
@@ -1389,8 +1381,8 @@ TextEditor::BaseTextEditor::Link QmlJSTextEditor::findLinkAt(const QTextCursor &
if (AST::UiImport *importAst = cast<AST::UiImport *>(node)) {
// if it's a file import, link to the file
foreach (const Bind::ImportInfo &import, semanticInfo.document->bind()->fileImports()) {
if (import.ast == importAst) {
foreach (const Bind::ImportInfo &import, semanticInfo.document->bind()->imports()) {
if (import.ast == importAst && import.type == Bind::ImportInfo::FileImport) {
BaseTextEditor::Link link(import.name);
link.begin = importAst->firstSourceLocation().begin();
link.end = importAst->lastSourceLocation().end();

View File

@@ -276,15 +276,16 @@ static void findNewFileImports(const Document::Ptr &doc, const Snapshot &snapsho
QStringList *importedFiles, QSet<QString> *scannedPaths)
{
// scan files and directories that are explicitly imported
foreach (const Bind::ImportInfo &fileImport, doc->bind()->fileImports()) {
if (! snapshot.document(fileImport.name))
*importedFiles += fileImport.name;
}
foreach (const Bind::ImportInfo &directoryImport, doc->bind()->directoryImports()) {
if (snapshot.documentsInDirectory(directoryImport.name).isEmpty()) {
if (! scannedPaths->contains(directoryImport.name)) {
*importedFiles += qmlFilesInDirectory(directoryImport.name);
scannedPaths->insert(directoryImport.name);
foreach (const Bind::ImportInfo &import, doc->bind()->imports()) {
if (import.type == Bind::ImportInfo::FileImport) {
if (! snapshot.document(import.name))
*importedFiles += import.name;
} else if (import.type == Bind::ImportInfo::DirectoryImport) {
if (snapshot.documentsInDirectory(import.name).isEmpty()) {
if (! scannedPaths->contains(import.name)) {
*importedFiles += qmlFilesInDirectory(import.name);
scannedPaths->insert(import.name);
}
}
}
}
@@ -296,10 +297,12 @@ static void findNewLibraryImports(const Document::Ptr &doc, const Snapshot &snap
{
// scan library imports
const QStringList importPaths = modelManager->importPaths();
foreach (const Bind::ImportInfo &libraryImport, doc->bind()->libraryImports()) {
foreach (const Bind::ImportInfo &import, doc->bind()->imports()) {
if (import.type != Bind::ImportInfo::LibraryImport)
continue;
foreach (const QString &importPath, importPaths) {
QDir dir(importPath);
dir.cd(libraryImport.name);
dir.cd(import.name);
const QString targetPath = dir.absolutePath();
// if we know there is a library, done