restricted assignment to primitives types only in semantic analysis