break;
case DeclarationName::CXXConversionFunctionName:
- assert(false && "Not sure how to mangle conversion functions yet");
+ // <operator-name> ::= cv <type> # (cast)
+ Out << "cv";
+ mangleType(Context.getCanonicalType(Name.getCXXNameType()));
break;
case DeclarationName::CXXOperatorName:
case DeclarationName::CXXUsingDirective:
assert(false && "Can't mangle a using directive name!");
+ break;
}
}
// ::= d # double
// ::= e # long double, __float80
// UNSUPPORTED: ::= g # __float128
- // NOT HERE: ::= z # ellipsis
// UNSUPPORTED: ::= Dd # IEEE 754r decimal floating point (64 bits)
// UNSUPPORTED: ::= De # IEEE 754r decimal floating point (128 bits)
// UNSUPPORTED: ::= Df # IEEE 754r decimal floating point (32 bits)
ArgEnd = Proto->arg_type_end();
Arg != ArgEnd; ++Arg)
mangleType(*Arg);
+
+ // <builtin-type> ::= z # ellipsis
+ if (Proto->isVariadic())
+ Out << 'z';
}
void CXXNameMangler::mangleType(const TagType *T) {