From 6e2eae8e4f9babd2881070a7301d85cf430cd970 Mon Sep 17 00:00:00 2001 From: Mark Spruiell Date: Thu, 27 Aug 2009 10:18:06 -0700 Subject: bug 4230: add support for enumerations as dictionary keys in PHP --- cpp/src/slice2php/Main.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'cpp/src/slice2php/Main.cpp') diff --git a/cpp/src/slice2php/Main.cpp b/cpp/src/slice2php/Main.cpp index a51a7e17ef6..de7997f0339 100644 --- a/cpp/src/slice2php/Main.cpp +++ b/cpp/src/slice2php/Main.cpp @@ -863,6 +863,39 @@ CodeVisitor::visitSequence(const SequencePtr& p) void CodeVisitor::visitDictionary(const DictionaryPtr& p) { + TypePtr keyType = p->keyType(); + BuiltinPtr b = BuiltinPtr::dynamicCast(keyType); + if(b) + { + switch(b->kind()) + { + case Slice::Builtin::KindBool: + case Slice::Builtin::KindByte: + case Slice::Builtin::KindShort: + case Slice::Builtin::KindInt: + case Slice::Builtin::KindLong: + case Slice::Builtin::KindString: + // + // These types are acceptable as dictionary keys. + // + break; + + case Slice::Builtin::KindFloat: + case Slice::Builtin::KindDouble: + emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP"); + break; + + case Slice::Builtin::KindObject: + case Slice::Builtin::KindObjectProxy: + case Slice::Builtin::KindLocalObject: + assert(false); + } + } + else if(!EnumPtr::dynamicCast(keyType)) + { + emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP"); + } + string type = getTypeVar(p); startNamespace(p); -- cgit v1.2.3