in rsc/src/main/scala/rsc/classpath/scalacp/SymbolInformations.scala [51:79]
def flip(sprop: Property) = result |= sprop.value
def isAbstractClass = sym.isClass && sym.isAbstract && !sym.isTrait
def isAbstractMethod = sym.isMethod && sym.isDeferred
def isAbstractType = sym.isType && !sym.isParam && sym.isDeferred
if (sym.isPackage) {
()
} else if (sym.isJava) {
crash(sym.toString)
} else {
if (isAbstractClass || isAbstractMethod || isAbstractType) flip(p.ABSTRACT)
if (sym.isFinal || sym.isModule) flip(p.FINAL)
if (sym.isSealed) flip(p.SEALED)
if (sym.isImplicit) flip(p.IMPLICIT)
if (sym.isLazy) flip(p.LAZY)
if (sym.isCase && (sym.isClass || sym.isModule)) flip(p.CASE)
if (sym.isType && sym.isCovariant) flip(p.COVARIANT)
if (sym.isType && sym.isContravariant) flip(p.CONTRAVARIANT)
if (sym.isField) {
if (sym.isMutable) flip(p.VAR)
else flip(p.VAL)
}
if (sym.isAccessor) {
if (sym.isStable) flip(p.VAL)
else flip(p.VAR)
}
// FIXME: https://github.com/twitter/rsc/issues/360
// FIXME: https://github.com/twitter/rsc/issues/361
if (sym.isDefaultParam) flip(p.DEFAULT)
}