Skip to content

Commit c7aaca4

Browse files
option to report dynamic() cast (from overloaded specs)
Summary: We already had the pieces (and it's reported as an error in strict mode), exposing an env option. ``` EQWALIZER_OVERLOADED_SPEC_DYNAMIC_RESULT=true elp eqwalize-all ``` Result: P1476661324 (1313 errors) Reviewed By: VLanvin Differential Revision: D59646202 fbshipit-source-id: 3888ed8c860d626afc995e204ee1285fd08fae71
1 parent 3efd1a8 commit c7aaca4

File tree

5 files changed

+8
-1
lines changed

5 files changed

+8
-1
lines changed

eqwalizer/src/main/resources/application.conf

+2
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,6 @@ eqwalizer {
1919
error_depth = ${?EQWALIZER_ERROR_DEPTH}
2020
clause_coverage = true
2121
clause_coverage = ${?EQWALIZER_CLAUSE_COVERAGE}
22+
overloaded_spec_dynamic_result = false
23+
overloaded_spec_dynamic_result = ${?EQWALIZER_OVERLOADED_SPEC_DYNAMIC_RESULT}
2224
}

eqwalizer/src/main/scala/com/whatsapp/eqwalizer/package.scala

+2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ package object eqwalizer {
4747
tolerateErrors: Boolean,
4848
checkRedundantGuards: Boolean,
4949
clauseCoverage: Boolean,
50+
overloadedSpecDynamicResult: Boolean,
5051
mode: Mode.Mode,
5152
errorDepth: Int,
5253
) {
@@ -78,6 +79,7 @@ package object eqwalizer {
7879
tolerateErrors = config.getBoolean("tolerate_errors"),
7980
checkRedundantGuards = config.getBoolean("check_redundant_guards"),
8081
clauseCoverage = config.getBoolean("clause_coverage"),
82+
overloadedSpecDynamicResult = config.getBoolean("overloaded_spec_dynamic_result"),
8183
mode,
8284
errorDepth = config.getInt("error_depth"),
8385
)

eqwalizer/src/main/scala/com/whatsapp/eqwalizer/tc/ElabApplyOverloaded.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class ElabApplyOverloaded(pipelineContext: PipelineContext) {
3333
val resTy = elabApply.elabApply(check.freshen(ft), args, argTys, env1)
3434
(resTy, env1)
3535
case _ =>
36-
if (!pipelineCtx.gradualTyping)
36+
if (!pipelineCtx.gradualTyping || pipelineCtx.overloadedSpecDynamicResult)
3737
diagnosticsInfo.add(NoSpecialType(expr.pos, expr, argTys))
3838
(DynamicType, env1)
3939
}

eqwalizer/src/main/scala/com/whatsapp/eqwalizer/tc/package.scala

+1
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,6 @@ package object tc {
7373
val errorDepth: Int =
7474
options.errorDepth.getOrElse(config.errorDepth)
7575
val clauseCoverage: Boolean = config.clauseCoverage
76+
val overloadedSpecDynamicResult: Boolean = config.overloadedSpecDynamicResult
7677
}
7778
}

eqwalizer/src/test/resources/application.conf

+2
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@ eqwalizer {
1515
mode = ${?EQWALIZER_MODE}
1616
clause_coverage = false
1717
clause_coverage = ${?EQWALIZER_CLAUSE_COVERAGE}
18+
overloaded_spec_dynamic_result = false
19+
overloaded_spec_dynamic_result = ${?EQWALIZER_OVERLOADED_SPEC_DYNAMIC_RESULT}
1820
}

0 commit comments

Comments
 (0)