Home | History | Annotate | Download | only in dmd

Lines Matching refs:AST

223     /// Namespace providing the actual AST nodes
224 alias AST = ASTCodegen;
259 AST.AggregateDeclaration adparent;
262 AST.TemplateDeclaration tdparent;
269 AST.Type origType;
272 AST.Visibility.Kind currentVisibility;
275 AST.STC storageClass;
291 /// Informations about the current context in the AST
309 private void includeSymbol(AST.Dsymbol dsym)
313 printf("[includeSymbol(AST.Dsymbol) enter] %s\n", dsym.toChars());
314 scope(exit) printf("[includeSymbol(AST.Dsymbol) exit] %s\n", dsym.toChars());
341 private EnumKind getEnumKind(AST.Type type)
345 case AST.Tint32:
347 case AST.Tbool,
348 AST.Tchar, AST.Twchar, AST.Tdchar,
349 AST.Tint8, AST.Tuns8,
350 AST.Tint16, AST.Tuns16,
351 AST.Tuns32,
352 AST.Tint64, AST.Tuns64:
354 case AST.Tarray:
358 case AST.Tenum:
368 private AST.Type determineEnumType(AST.Type type)
374 case AST.Tchar: return AST.Type.tchar.constOf.pointerTo;
375 case AST.Twchar: return AST.Type.twchar.constOf.pointerTo;
376 case AST.Tdchar: return AST.Type.tdchar.constOf.pointerTo;
393 private void writeProtection(const AST.Visibility.Kind kind)
401 switch(kind) with(AST.Visibility.Kind)
404 if (this.currentVisibility == AST.Visibility.Kind.private_)
406 this.currentVisibility = AST.Visibility.Kind.private_;
411 if (this.currentVisibility == AST.Visibility.Kind.protected_)
413 this.currentVisibility = AST.Visibility.Kind.protected_;
418 if (this.currentVisibility == AST.Visibility.Kind.public_)
420 this.currentVisibility = AST.Visibility.Kind.public_;
446 private void writeIdentifier(const AST.Dsymbol s, const bool canFix = false)
454 /** Overload of `writeIdentifier` used for all AST nodes not descending from Dsymbol **/
490 private bool isSupportedType(AST.Type t)
501 case AST.Tarray:
502 case AST.Tsarray:
503 case AST.Tpointer:
504 case AST.Treference:
505 case AST.Tdelegate:
506 return isSupportedType((cast(AST.TypeNext) t).next);
509 case AST.Tfunction:
511 auto tf = cast(AST.TypeFunction) t;
523 case AST.Tnoreturn:
526 case AST.Timaginary32:
527 case AST.Timaginary64:
528 case AST.Timaginary80:
535 override void visit(AST.Dsymbol s)
541 printf("[AST.Dsymbol enter] %s\n", s.astTypeName().ptr);
545 override void visit(AST.Import i)
550 const(char*) writeImport(AST.Dsymbol sym, const Identifier alias_)
593 if (i.visibility.kind < AST.Visibility.Kind.public_)
612 AST.Dsymbols entries;
624 static int compare(const AST.Dsymbol* a, const AST.Dsymbol* b)
658 override void visit(AST.AttribDeclaration pd)
668 if (adparent || s.visible().kind >= AST.Visibility.Kind.public_)
673 override void visit(AST.StorageClassDeclaration scd)
679 visit(cast(AST.AttribDeclaration) scd);
683 override void visit(AST.LinkDeclaration ld)
689 visit(cast(AST.AttribDeclaration)ld);
693 override void visit(AST.CPPMangleDeclaration md)
699 visit(cast(AST.AttribDeclaration) md);
703 override void visit(AST.Module m)
709 if (s.visible().kind < AST.Visibility.Kind.public_)
715 override void visit(AST.FuncDeclaration fd)
729 auto tf = cast(AST.TypeFunction)fd.type;
745 if (fd.visibility.kind == AST.Visibility.Kind.none || fd.visibility.kind == AST.Visibility.Kind.private_)
778 (tdparent && adparent.isClassDeclaration() && !(this.storageClass & AST.STC.final_ || fd.isFinal))))
787 if (!(adparent.storage_class & AST.STC.abstract_) &&
802 writeProtection(AST.Visibility.Kind.private_);
810 auto tfv = cast(AST.TypeFunction)fdv.type;
826 writeProtection(AST.Visibility.Kind.public_);
841 private void checkFunctionNeedsPlaceholder(AST.FuncDeclaration fd)
848 writeProtection(AST.Visibility.Kind.private_);
858 writeProtection(AST.Visibility.Kind.private_);
865 override void visit(AST.UnitTestDeclaration utd)
870 override void visit(AST.VarDeclaration vd)
886 if (vd.originalType && vd.type == AST.Type.tsize_t)
898 AST.Type type = vd.type;
918 if (vd.storage_class & (AST.STC.const_ | AST.STC.immutable_))
922 if (vd.storage_class & AST.STC.manifest)
926 if (vd.visibility.kind == AST.Visibility.Kind.none || vd.visibility.kind == AST.Visibility.Kind.private_) {
927 ignored("enum `%s` because it is `%s`.", vd.toPrettyChars(), AST.visibilityToChars(vd.visibility.kind));
944 auto ie = AST.initializerToExpression(vd._init).isIntegerExp();
956 auto e = AST.initializerToExpression(vd._init);
970 if (vd.storage_class & (AST.STC.static_ | AST.STC.extern_ | AST.STC.gshared) ||
1026 visit(cast(AST.Dsymbol)vd);
1029 override void visit(AST.TypeInfoDeclaration tid)
1034 override void visit(AST.AliasDeclaration ad)
1045 if (t.ty == AST.Tdelegate || t.ty == AST.Tident)
1047 visit(cast(AST.Dsymbol)ad);
1052 if (ad.originalType && ad.type.ty == AST.Tpointer &&
1053 (cast(AST.TypePointer)t).nextOf.ty == AST.Tfunction)
1156 override void visit(AST.Nspace ns)
1162 override void visit(AST.CPPNamespaceDeclaration ns)
1169 private void handleNspace(AST.Dsymbol namespace, Dsymbols* members)
1186 override void visit(AST.AnonDeclaration ad)
1205 private bool memberField(AST.VarDeclaration vd)
1211 if (vd.type.ty == AST.Tfunction)
1213 if (vd.type.ty == AST.Tsarray)
1218 override void visit(AST.StructDeclaration sd)
1254 this.currentVisibility = structAsClass ? AST.Visibility.Kind.private_ : AST.Visibility.Kind.public_;
1269 writeProtection(AST.Visibility.Kind.public_);
1304 auto e = AST.initializerToExpression(vd._init);
1315 if (varCount && (!ctor || ctor.storage_class & AST.STC.disable))
1420 override void visit(AST.ClassDeclaration cd)
1436 if (cd.storage_class & AST.STC.final_ || (tdparent && this.storageClass & AST.STC.final_))
1469 this.currentVisibility = classAsStruct ? AST.Visibility.Kind.public_ : AST.Visibility.Kind.private_;
1486 override void visit(AST.EnumDeclaration ed)
1502 AST.Type type = ed.memtype;
1603 AST.Type memberType = type ? type : m.type;
1619 auto ie = cast(AST.IntegerExp)m.value;
1632 auto ie = cast(AST.IntegerExp)m.value;
1659 override void visit(AST.EnumMember em)
1674 override void visit(AST.TupleDeclaration tup)
1690 private void typeToBuffer(AST.Type t, AST.Dsymbol s, const bool canFixup = false)
1694 printf("[typeToBuffer(AST.Type, AST.Dsymbol) enter] %s sym %s\n", t.toChars(), s.toChars());
1695 scope(exit) printf("[typeToBuffer(AST.Type, AST.Dsymbol) exit] %s sym %s\n", t.toChars(), s.toChars());
1709 AST.Dsymbol customLength;
1731 else if (AST.isType(sym))
1778 override void visit(AST.Type t)
1785 override void visit(AST.TypeNoreturn t)
1792 override void visit(AST.TypeIdentifier t)
1820 override void visit(AST.TypeNull t)
1831 override void visit(AST.TypeTypeof t)
1857 override void visit(AST.TypeBasic t)
1866 case AST.Tvoid: typeName = "void"; break;
1867 case AST.Tbool: typeName = "bool"; break;
1868 case AST.Tchar: typeName = "char"; break;
1869 case AST.Twchar: typeName = "char16_t"; break;
1870 case AST.Tdchar: typeName = "char32_t"; break;
1871 case AST.Tint8: typeName = "int8_t"; break;
1872 case AST.Tuns8: typeName = "uint8_t"; break;
1873 case AST.Tint16: typeName = "int16_t"; break;
1874 case AST.Tuns16: typeName = "uint16_t"; break;
1875 case AST.Tint32: typeName = "int32_t"; break;
1876 case AST.Tuns32: typeName = "uint32_t"; break;
1877 case AST.Tint64: typeName = "int64_t"; break;
1878 case AST.Tuns64: typeName = "uint64_t"; break;
1879 case AST.Tfloat32: typeName = "float"; break;
1880 case AST.Tfloat64: typeName = "double"; break;
1881 case AST.Tfloat80:
1885 case AST.Tcomplex32: typeName = "_Complex float"; break;
1886 case AST.Tcomplex64: typeName = "_Complex double"; break;
1887 case AST.Tcomplex80:
1893 case AST.Timaginary32: typeName = "float"; break;
1894 case AST.Timaginary64: typeName = "double"; break;
1895 case AST.Timaginary80:
1906 override void visit(AST.TypePointer t)
1923 if (t.next.ty != AST.Tfunction)
1929 override void visit(AST.TypeSArray t)
1935 override void visit(AST.TypeAArray t)
1938 AST.Type.tvoidptr.accept(this);
1941 override void visit(AST.TypeFunction tf)
1970 private void enumToBuffer(AST.EnumDeclaration ed)
2019 override void visit(AST.TypeEnum t)
2028 override void visit(AST.TypeStruct t)
2037 override void visit(AST.TypeDArray t)
2048 override void visit(AST.TypeInstance t)
2053 private void visitTi(AST.TemplateInstance ti)
2063 if (!AST.isType(o))
2072 if (auto tt = AST.isType(o))
2086 override void visit(AST.TemplateDeclaration td)
2095 visit(cast(AST.Dsymbol)td);
2104 visit(cast(AST.Dsymbol)td);
2125 private void printTemplateParams(const AST.TemplateDeclaration td)
2142 override void visit(AST.TemplateMixin tm)
2162 if (kind == AST.Visibility.Kind.public_ || kind == AST.Visibility.Kind.undefined)
2173 private AST.Dsymbol findSymbol(Identifier name, AST.Dsymbol context)
2197 private AST.Dsymbol findSymbol(Identifier name)
2199 AST.Dsymbol sym;
2210 private AST.TemplateDeclaration findTemplateDeclaration(AST.TemplateInstance ti)
2223 override void visit(AST.TypeClass t)
2247 private void funcToBuffer(AST.TypeFunction tf, AST.FuncDeclaration fd)
2251 printf("[funcToBuffer(AST.TypeFunction) enter] %s\n", fd.toChars());
2252 scope(exit) printf("[funcToBuffer(AST.TypeFunction) exit] %s\n", fd.toChars());
2255 auto originalType = cast(AST.TypeFunction)fd.originalType;
2276 tf.next == AST.Type.tsize_t ? originalType.next.accept(this) : tf.next.accept(this);
2288 if (fparam.type == AST.Type.tsize_t && originalType)
2303 override void visit(AST.Parameter p)
2312 this.forwarding = !!(p.storageClass & AST.STC.ref_);
2317 if (p.storageClass & AST.STC.ref_)
2343 private void printExpressionFor(AST.Type target, AST.Expression exp, const bool isCtor = false)
2346 static bool needsCast(AST.Type target, AST.Expression exp)
2447 override void visit(AST.Expression e)
2456 override void visit(AST.UnaExp e)
2464 override void visit(AST.BinExp e)
2487 override void visit(AST.VarExp e)
2502 private void printPrefix(AST.Dsymbol var)
2511 override void visit(AST.CallExp e)
2537 override void visit(AST.DotVarExp e)
2562 override void visit(AST.DotIdExp e)
2571 override void visit(AST.ScopeExp e)
2582 override void visit(AST.NullExp e)
2592 override void visit(AST.ArrayLiteralExp e)
2598 override void visit(AST.StringExp e)
2615 override void visit(AST.RealExp e)
2642 override void visit(AST.IntegerExp e)
2649 private void visitInteger(dinteger_t v, AST.Type t)
2655 case AST.Tenum:
2656 auto te = cast(AST.TypeEnum)t;
2662 case AST.Tbool:
2665 case AST.Tint8:
2668 case AST.Tuns8:
2671 case AST.Tint16:
2674 case AST.Tuns16:
2675 case AST.Twchar:
2678 case AST.Tint32:
2679 case AST.Tdchar:
2682 case AST.Tuns32:
2685 case AST.Tint64:
2688 case AST.Tuns64:
2691 case AST.Tchar:
2703 override void visit(AST.StructLiteralExp sle)
2731 private static AST.Expression findDefaultInitializer(AST.VarDeclaration vd)
2734 return AST.initializerToExpression(vd._init);
2740 auto sle = new AST.StructLiteralExp(Loc.initial, ts.sym, new AST.Expressions(0));
2801 private bool shouldEmit(AST.Dsymbol sym)
2843 private bool shouldEmitAndMarkVisited(AST.Dsymbol sym)
2898 private void ensureDeclared(AST.Dsymbol sym)
2969 private void writeFullName(AST.Dsymbol sym, const bool mustInclude = false)
2990 static bool isNestedIn(AST.Dsymbol sym, AST.Dsymbol par)
3000 AST.TemplateInstance ti;
3039 extern(D) static const(char)[] getMangleOverride(const AST.Dsymbol sym)