From f54f7f145f14d76db74a8249dcdfc8b5914556df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Sj=C3=B6lund?= Date: Mon, 7 May 2012 08:40:52 +0000 Subject: [PATCH] - Fixed getInstanceName() to work for packages and top-level models git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@11858 f25d12d1-65f4-0310-ae8a-bbce733d8d8e --- Compiler/FrontEnd/Static.mo | 39 ++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/Compiler/FrontEnd/Static.mo b/Compiler/FrontEnd/Static.mo index 390736868c1..034ada5c20a 100644 --- a/Compiler/FrontEnd/Static.mo +++ b/Compiler/FrontEnd/Static.mo @@ -5690,17 +5690,34 @@ protected function elabBuiltinGetInstanceName output Env.Cache outCache; output DAE.Exp outExp; output DAE.Properties outProperties; -protected - String str; - Absyn.Path name; -algorithm - {} := inAbsynExpLst; - {} := inNamedArg; - Env.CACHE(modelName=name) := inCache; - outCache := inCache; - str := Absyn.pathLastIdent(name) +& "." +& PrefixUtil.printPrefixStr(inPrefix); - outExp := DAE.SCONST(str); - outProperties := DAE.PROP(DAE.T_STRING_DEFAULT,DAE.C_CONST()); +algorithm + (outCache,outExp,outProperties) := matchcontinue (inCache,inEnv,inAbsynExpLst,inNamedArg,inBoolean,inPrefix,info) + local + String str; + Absyn.Path name,envName; + case (Env.CACHE(modelName=name),inEnv,{},{},_,Prefix.NOPRE(),_) + equation + envName = Env.getEnvName(inEnv); + true = Absyn.pathEqual(envName,name); + str = Absyn.pathLastIdent(name); + outExp = DAE.SCONST(str); + outProperties = DAE.PROP(DAE.T_STRING_DEFAULT,DAE.C_CONST()); + then (inCache,outExp,outProperties); + case (Env.CACHE(modelName=name),inEnv,{},{},_,Prefix.NOPRE(),_) + equation + envName = Env.getEnvName(inEnv); + false = Absyn.pathEqual(envName,name); + str = Absyn.pathString(envName); + outExp = DAE.SCONST(str); + outProperties = DAE.PROP(DAE.T_STRING_DEFAULT,DAE.C_CONST()); + then (inCache,outExp,outProperties); + case (Env.CACHE(modelName=name),inEnv,{},{},_,inPrefix,_) + equation + str = Absyn.pathLastIdent(name) +& "." +& PrefixUtil.printPrefixStr(inPrefix); + outExp = DAE.SCONST(str); + outProperties = DAE.PROP(DAE.T_STRING_DEFAULT,DAE.C_CONST()); + then (inCache,outExp,outProperties); + end matchcontinue; end elabBuiltinGetInstanceName; protected function elabBuiltinVector "function: elabBuiltinVector