void DeclarationBuilder::declareVariable(IToken *id, const AbstractType::Ptr &type) { DUChainWriteLocker lock; Declaration *dec = openDefinition<Declaration>(identifierForNode(id), editorFindRange(id, id)); dec->setType(type); dec->setKind(Declaration::Instance); closeDeclaration(); }
void DeclarationBuilder::visitVersionSpecification(IVersionSpecification *node) { DeclarationBuilderBase::visitVersionSpecification(node); DUChainWriteLocker lock; Declaration *label = openDeclaration<Declaration>(node->getToken(), node); label->setKind(Declaration::Type); closeDeclaration(); }
void DeclarationBuilder::visitDebugSpecification(IDebugSpecification *node) { DeclarationBuilderBase::visitDebugSpecification(node); DUChainWriteLocker lock; Declaration *label = openDeclaration<Declaration>(node->getIdentifierOrInteger(), node); label->setKind(Declaration::Type); closeDeclaration(); }
void DeclarationBuilder::visitLabeledStatement(ILabeledStatement *node) { DeclarationBuilderBase::visitLabeledStatement(node); DUChainWriteLocker lock; Declaration *label = openDeclaration<Declaration>(node->getIdentifier(), node); label->setKind(Declaration::Type); closeDeclaration(); }
void DeclarationBuilder::visitCatch(ICatch *node) { TypeBuilder::visitCatch(node); DUChainWriteLocker lock; Declaration *parameter = openDeclaration<Declaration>(node->getIdentifier(), node); parameter->setKind(Declaration::Instance); parameter->setAbstractType(lastType()); closeDeclaration(); }
void DeclarationBuilder::visitForeachType(IForeachType *node) { TypeBuilder::visitForeachType(node); DUChainWriteLocker lock; Declaration *argument = openDeclaration<Declaration>(node->getIdentifier(), node); argument->setKind(Declaration::Instance); argument->setAbstractType(lastType()); closeDeclaration(); }
void DeclarationBuilder::visitEnumDeclaration(IEnumDeclaration *node) { DUChainWriteLocker lock; Declaration *e = openDeclaration<Declaration>(node->getName(), node); e->setKind(Declaration::Type); lock.unlock(); DeclarationBuilderBase::visitEnumDeclaration(node); lock.lock(); e->setInternalContext(lastContext()); //e->setAbstractType(lastType()); closeDeclaration(); }
void DeclarationBuilder::visitModule(IModule *node) { if(node->getModuleDeclaration()) { if(node->getModuleDeclaration()->getComment()) setComment(node->getModuleDeclaration()->getComment()); DUChainWriteLocker lock; auto m_thisPackage = identifierForNode(node->getModuleDeclaration()->getModuleName()); KDevelop::RangeInRevision range = editorFindRange(node->getModuleDeclaration()->getModuleName(), node->getModuleDeclaration()->getModuleName()); Declaration *packageDeclaration = openDeclaration<Declaration>(m_thisPackage, range); packageDeclaration->setKind(Declaration::Namespace); openContext(node, editorFindRange(node, 0), DUContext::Namespace, m_thisPackage); packageDeclaration->setInternalContext(currentContext()); lock.unlock(); DeclarationBuilderBase::visitModule(node); closeContext(); closeDeclaration(); topContext()->updateImportsCache(); } }