change error info from arr to map
protect macros
add function outputType
add function getTypeName