  Partial code usually involves non-fully-qualified type names (non-FQNs) and
undeclared receiving objects. Resolving the FQNs of these non-FQN types and
undeclared receiving objects (referred to as type inference) is the
prerequisite to effective search and reuse of partial code. Existing
dictionary-lookup based methods build a symbolic knowledge base of API names
and code contexts, which involve significant compilation overhead and are
sensitive to unseen API names and code context variations. In this paper, we
formulate type inference as a cloze-style fill-in-blank language task. Built on
source code naturalness, our approach fine-tunes a code masked language model
(MLM) as a neural knowledge base of code elements with a novel "pre-train,
prompt and predict" paradigm from raw source code. Our approach is lightweight
and has minimum requirements on code compilation. Unlike existing symbolic name
and context matching for type inference, our prompt-tuned code MLM packs FQN
syntax and usage in its parameters and supports fuzzy neural type inference. We
systematically evaluate our approach on a large amount of source code from
GitHub and Stack Overflow. Our results confirm the effectiveness of our
approach design and the practicality for partial code type inference. As the
first of its kind, our neural type inference method opens the door to many
innovative ways of using partial code.
