ECOOP 2015
Sun 5 - Fri 10 July 2015 Prague, Czech Republic
Tue 7 Jul 2015 12:05 - 12:30 at Hluboka II - Session 2

Most popular programming languages support situations where a value of one type is converted into a value of another type without any explicit cast. Such implicit type conversions, or type coercions, are a highly controversial language feature. Proponents argue that type coercions enable writing concise code. Opponents argue that type coercions are error-prone and that they reduce the understandability of programs. This paper studies the use of type coercions in JavaScript, a language notorious for its widespread use of coercions. We dynamically analyze hundreds of programs, including real-world web applications and popular benchmark programs. We find that coercions are widely used (in 80.42% of all function executions) and that most coercions are likely to be harmless (98.85%). Furthermore, we identify a set of rarely occurring and potentially harmful coercions that safer subsets of JavaScript or future language designs may want to disallow. Our results suggest that type coercions are significantly less evil than commonly assumed and that analyses targeted at real-world JavaScript programs must consider coercions.

Tue 7 Jul

PLE-2015-papers
11:40 - 12:30: PLE - Session 2 at Hluboka II
PLE-2015-papers143626200000011:40 - 12:05
Talk
PLE-2015-papers143626350000012:05 - 12:30
Talk