Changeset View
Changeset View
Standalone View
Standalone View
duchain/builders/typebuilder.cpp
Show All 21 Lines | |||||
22 | 22 | | |||
23 | #include <language/duchain/identifier.h> | 23 | #include <language/duchain/identifier.h> | ||
24 | #include <language/duchain/duchain.h> | 24 | #include <language/duchain/duchain.h> | ||
25 | #include <language/duchain/duchainlock.h> | 25 | #include <language/duchain/duchainlock.h> | ||
26 | #include <language/duchain/ducontext.h> | 26 | #include <language/duchain/ducontext.h> | ||
27 | #include <language/duchain/declaration.h> | 27 | #include <language/duchain/declaration.h> | ||
28 | #include <language/duchain/types/integraltype.h> | 28 | #include <language/duchain/types/integraltype.h> | ||
29 | #include "../declarations/classdeclaration.h" | 29 | #include "../declarations/classdeclaration.h" | ||
30 | #include "../types/indexedcontainer.h" | ||||
30 | #include "../types/integraltypeextended.h" | 31 | #include "../types/integraltypeextended.h" | ||
31 | #include "../types/structuretype.h" | 32 | #include "../types/structuretype.h" | ||
32 | #include <duchaindebug.h> | 33 | #include <duchaindebug.h> | ||
33 | 34 | | |||
34 | #include "editorintegrator.h" | 35 | #include "editorintegrator.h" | ||
35 | #include "parsesession.h" | 36 | #include "parsesession.h" | ||
36 | #include "phpdebugvisitor.h" | 37 | #include "phpdebugvisitor.h" | ||
37 | #include "expressionparser.h" | 38 | #include "expressionparser.h" | ||
▲ Show 20 Lines • Show All 315 Lines • ▼ Show 20 Line(s) | 352 | } else { | |||
353 | TypeBuilderBase::visitConstantDeclaration(node); | 354 | TypeBuilderBase::visitConstantDeclaration(node); | ||
354 | } | 355 | } | ||
355 | } | 356 | } | ||
356 | 357 | | |||
357 | void TypeBuilder::visitParameter(ParameterAst *node) | 358 | void TypeBuilder::visitParameter(ParameterAst *node) | ||
358 | { | 359 | { | ||
359 | AbstractType::Ptr type; | 360 | AbstractType::Ptr type; | ||
360 | if (node->isVariadic != -1) { | 361 | if (node->isVariadic != -1) { | ||
362 | if (node->parameterType) { | ||||
363 | //don't use openTypeFromName as it uses cursor for findDeclarations | ||||
364 | DeclarationPointer decl = findDeclarationImport(ClassDeclarationType, | ||||
365 | identifierForNamespace(node->parameterType, editor())); | ||||
366 | if (decl) { | ||||
367 | IndexedContainer *container = new IndexedContainer(); | ||||
368 | const IndexedString *containerType = new IndexedString("array"); | ||||
369 | container->addEntry(decl->abstractType()); | ||||
370 | container->setPrettyName(*containerType); | ||||
371 | type = AbstractType::Ptr(container); | ||||
372 | } | ||||
373 | } else { | ||||
361 | type = AbstractType::Ptr(new IntegralType(IntegralType::TypeArray)); | 374 | type = AbstractType::Ptr(new IntegralType(IntegralType::TypeArray)); | ||
375 | } | ||||
362 | } else if (node->parameterType) { | 376 | } else if (node->parameterType) { | ||
363 | //don't use openTypeFromName as it uses cursor for findDeclarations | 377 | //don't use openTypeFromName as it uses cursor for findDeclarations | ||
364 | DeclarationPointer decl = findDeclarationImport(ClassDeclarationType, | 378 | DeclarationPointer decl = findDeclarationImport(ClassDeclarationType, | ||
365 | identifierForNamespace(node->parameterType, editor())); | 379 | identifierForNamespace(node->parameterType, editor())); | ||
366 | if (decl) { | 380 | if (decl) { | ||
367 | type = decl->abstractType(); | 381 | type = decl->abstractType(); | ||
368 | } | 382 | } | ||
369 | } else if (node->arrayType != -1) { | 383 | } else if (node->arrayType != -1) { | ||
▲ Show 20 Lines • Show All 210 Lines • Show Last 20 Lines |